基於 QQ 第三方登入

Moshutong發表於2019-01-12

首先,讓我們來了解下,什麼是第三方登入,其實說白了就是在自己的web程式中應用於第三方的介面來進行登入,譬如:QQ、微信、微博,GitHub等等。
file
如上圖所示:
然後,我們來了解下,怎麼去應用第三方的登入,第三方登入,主要分為兩種:第一種:純粹的原生程式碼來寫;第二種:用第三方包裝好的程式碼加以應用,嵌入到自己的程式中就行,在來這裡,我們一一來介紹著兩種方法。(基於laravel框架)
第一種,用原生的程式碼進行編寫。總共步驟如下:

  • 建立應用
  • 安裝
  • 註冊服務提供者
  • 新增Socialite門面
  • 在新增事件監聽器
  • 在設定裡新增服務配置
  • 修改.env檔案
  • 使用
  1. 建立應用
    登入 qq 互聯建立網站應用 網址:https://connect.qq.com/index.html
    登入完之後進行註冊,填寫資訊,資訊按照提示一步一步來就行,沒有難度。傻瓜式操作,直接下一步就行。弄完之後,要等個一兩天就會qq互聯平臺稽核通過的,通過之後就能看到以下的介面:
    file
    點選應用管理就能看到稽核結果。
    2.安裝
    開啟編輯器,我在這裡演示的是用Phpstorm編輯器, 開啟Composer 複製以下程式碼直接執行就行:

    composer require socialiteproviders/qq

    3.註冊服務提供者
    config/app.phpproviders新增 :

    'providers' => [
    SocialiteProviders\Manager\ServiceProvider::class,
    ...
    ];

    4.新增Socialite門面
    config/app.phpaliases新增 :

    'aliases' => [
        'Socialite' => Laravel\Socialite\Facades\Socialite::class,
    ]

    5.在新增事件監聽器
    App/Providers/EventServiceProvider中新增事件監聽 :

    protected $listen = [
    'SocialiteProviders\Manager\SocialiteWasCalled' => [
        'SocialiteProviders\QQ\QqExtendSocialite@handle'
    ],
    ];

    6.在設定裡新增服務配置
    config/services.php中新增:

    'qq' => [
    'client_id' => env('QQ_KEY'),
    'client_secret' => env('QQ_SECRET'),
    'redirect' => env('QQ_REDIRECT_URI'),
    ],

    7.修改.env檔案
    .env中新增:

    QQ_KEY=xxxxx
    QQ_SECRET=xxxxxxx
    QQ_REDIRECT_URI=call_back
    注意:這裡的QQ_KEY和QQ_SECRET是自己qq互聯平臺中應用管理中出現的,可以通過檢視能找到自己的相關資訊,如圖:

    file
    file
    8.使用
    在上面所有步驟完成之後,就可以進行再自己的專案中嵌入了。

    //qq登入  注意名稱空間  實在前臺登入的控制器中qqLogin登入方法中進行執行:
    public function qqLogin(){
       return Socialite::with('qq')->redirect();
    }
    //回撥函式中執行 也就是您在哪裡呼叫的回撥qq
    public function qqBack (Request $request)
    {
    // 這裡設定了判斷,判斷是否是用qq登入還是郵件登入
       if ($request->state && $request->code){
           $qc=new  \QC();
           $access_token = $qc->qq_callback();
           $openid=$qc->get_openid ();
           $qc=new \QC($access_token,$openid);
           $userInfo=$qc->get_user_info();
           $user=User::where('open_id',$openid)->first();
           //dd ($userInfo);
           if(!$user){
               $user = new User();
               $user->open_id = $openid;
               $user->name = $userInfo['nickname'];
               $user->icon = $userInfo['figureurl_1'];
               $user->save();
           }
           //執行登入
          auth ()->login ($user);
           //跳轉
           return redirect('/');
    
       }
    
    }

    對於第三方qq登入,如果還有什麼不懂的問題,建議您看一下qq互聯中sdk文件,
    file
    其實,第三方登入都會有一個文件的手冊的,這裡就告訴您一個方法,不管您之前有沒有接觸到這一類,首先找一下應用手冊,其他的按照手冊上步驟來操作就可以了。有什麼不懂的問題可以聯絡本人,發我郵件,本人都會回覆的,謝謝!郵箱:729589198@qq.com

本作品採用《CC 協議》,轉載必須註明作者和本文連結

Mrs.默先森

相關文章