使用laravel5怎么實現微信第三方登錄功能?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
Laravel 是一套簡潔、優雅的PHP Web開發框架。它可以讓你從面條一樣雜亂的代碼中解脫出來;它可以幫你構建一個完美的網絡APP,而且每行代碼都可以簡潔、富于表達力。
授權流程說明
1. 第三方發起微信授權登錄請求,微信用戶允許授權第三方應用后,微信會拉起應用或重定向到第三方網站,并且帶上授權臨時票據code參數;
2. 通過code參數加上AppID和AppSecret等,通過API換取access_token;
3. 通過access_token進行接口調用,獲取用戶基本數據資源或幫助用戶實現基本操作。

在框架中實現(laravel)
Laravel Socialite簡介
除了傳統的基于表單的登錄認證外,Laravel 還可以通過Laravel Socialite 提供 OAuth 認證,目前支持的認證驅動包括 Facebook、Twitter、Google、LinkedIn、GitHub 和 Bitbucket。
安裝相關依賴
composer require laravel/socialite
安裝weixin-web
composer require socialiteproviders/weixin-web
注意網站實現微信登錄需要的依賴包為socialiteproviders/weixin-web,如果是手機端App那么可以用socialiteproviders/weixin。
shanlei@shanlei-Lenovo-ideapad-110-15ISK:/var/www/html/zslm_back$ composer search socialiteproviders/weixin socialiteproviders/weixin Weixin OAuth3 Provider for Laravel Socialite socialiteproviders/weixin-web Weixin-Web OAuth3 Provider for Laravel Socialite socialiteproviders/weixin-web Weixin-Web OAuth3 Provider for Laravel Socialite socialiteproviders/weixin Weixin OAuth3 Provider for Laravel Socialite
相關配置
1. 設置app/config.php
添加providers:
'providers' => [ SocialiteProviders\Manager\ServiceProvider::class, ],
添加aliases:
'aliases' => [ 'Socialite' => Laravel\Socialite\Facades\Socialite::class, ],
2. 配置config/services.php
'weixinweb' => [
'client_id' => env('WEIXIN_KEY'),
'client_secret' => env('WEIXIN_SECRET'),
'redirect' => env('WEIXIN_REDIRECT_URI'),
],3. 設置app/Providers/EventServiceProvider.php
添加事件監聽
use SocialiteProviders\Manager\SocialiteWasCalled; protected $listen = [ 'SocialiteProviders\Manager\SocialiteWasCalled' => [ 'SocialiteProviders\WeixinWeb\WeixinWebExtendSocialite@handle', ], ];
4. 添加路由
Route::get('auth/weixin', 'Auto\ThirdLogin\WeixinController@redirectToProvider');
Route::get('auth/weixin/callback','Auto\ThirdLogin\WeixinController@handleProviderCallback');5. 編寫WeixinController
<?php
/**
* Created by PhpStorm.
* User: shanlei
* Date: 1/6/2017
* Time: 11:34 AM
*/
namespace App\Http\Controllers\Auto\ThirdLogin;
use Socialite;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use SocialiteProviders\WeixinWeb\Provider;
class WeixinController extends Controller{
public function redirectToProvider(Request $request)
{
return Socialite::with('weixinweb')->redirect();
}
public function handleProviderCallback(Request $request)
{
$user_data = Socialite::with('weixinweb')->stateless()->user();
dd($user_data);
}
}訪問auth/weixin,獲得返回數據。

常見錯誤
1. 微信授權回調域不符(redirect_uri不符),參見下面規范:

2. 執行過程中出現一下錯誤:
exception 'Laravel\Socialite\Two\InvalidStateException'
in /example/vendor/laravel/socialite/src/Two/AbstractProvider.php:161
解決:
通過stateless()方法禁止會話狀態驗證
Socialite::driver('weixinweb')->stateless()->user()關于使用laravel5怎么實現微信第三方登錄功能問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。