Laravel 第三方登入之微博

A_aliane發表於2019-03-05

申請微博開發者

  • 首先到新浪微博申請加入開發者: http://open.weibo.com/

  • 右上角登入,登入後點選右上角頭像,選第一個編輯開發者資訊並提交稽核

  • 然後導航欄 微連線->網站接入->立即接入,新增一個應用

  • 導航欄,我的應用->應用資訊->高階資訊

  • 如果只是個人練手第三方登陸,可以不進行稽核等操作,你會得到一個App Key和一個App Secret。

Composer安裝

composer require socialiteproviders/weibo

新增 Service Provider config/app.php 如果之前新增過 Socialite Provider,得先註釋掉

'providers' => [
//    Laravel\Socialite\SocialiteServiceProvider::class,
    SocialiteProviders\Manager\ServiceProvider::class, // add
],

新增 Facades Aliase config/app.php

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

新增事件處理器 檔案 app/Providers/EventServiceProvider.php

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

新增路由 可以自己建立控制器

// 引導使用者到新浪微博的登入授權頁面
Route::get('auth/weibo', 'Auth\AuthController@weibo');
// 使用者授權後新浪微博回撥的頁面
Route::get('auth/callback', 'Auth\AuthController@callback');

配置 檔案 config/services.php

'weibo' => [
    'client_id' => env('WEIBO_KEY'),
    'client_secret' => env('WEIBO_SECRET'),
    'redirect' => env('WEIBO_REDIRECT_URI'),  
],

.env

WEIBO_KEY=39367792262
WEIBO_SECRET=086e39e85d85898c88bab100287
WEIBO_REDIRECT_URI=http://www.zb.cn/auth/weibo

控制器程式碼

<?php
namespace App\Http\Controllers\Auth;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class AuthController extends Controller
{
     //獲取微博登入頁面
     public function weibo() {
        return \Socialite::with('weibo')->redirect();
        // return \Socialite::with('weibo')->scopes(array('email'))->redirect();
    }
    //獲取登入使用者資訊
    public function callback() {
        $oauthUser = \Socialite::with('weibo')->user();
        var_dump($oauthUser->getId());
        var_dump($oauthUser->getNickname());
        var_dump($oauthUser->getName());
        var_dump($oauthUser->getEmail());
        var_dump($oauthUser->getAvatar());
    }
}

錯誤解決
如果是沒有21322 顯示重定向錯誤

在微博開發平臺中的我的應用裡應用資訊裡的高階設定設定授權設定

如果是ssl錯誤的話

下載cacert.pem
放置在php的資料夾下面
配置php.ini   curl.cainfo ="cacert.pem 所在的路徑"

如果是400 Bad Request或no message

清理遊覽器記錄,清理cookie

相關文章