您好,登錄后才能下訂單哦!
背景
最近手頭一個項目需要實現用戶在網站的第三方登錄(微信和微博),后端框架laravel5.4。
實現過程以微信網頁版第三方登錄,其他于此類似,在此不做重復。
準備工作
網站應用微信登錄是基于OAuth3.0協議標準構建的微信OAuth3.0授權登錄系統。
在進行微信OAuth3.在進行微信OAuth3.0授權登錄接入之前,在微信開放平臺注冊開發者帳號,并擁有一個已審核通過的網站應用,并獲得相應的AppID和AppSecret,申請微信登錄且通過審核后,可開始接入流程。
總結下來就是:
1.進入微信開放平臺注冊開發者賬號
2.根據項目類型創建應用,再此我創建的是網站應用.
3.接入微信登陸功能,讓用戶可使用微信登錄你的網站應用
4.獲得AppID和AppSectet
到此微信第三方登錄的準備工作就完成了。
授權流程說明
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()
PHP后臺實現微信小程序登錄
詳解Vue微信授權登錄前后端分離較為優雅的解決方案
vue 微信授權登錄解決方案
一步步教會你微信小程序的登錄鑒權
微信小程序獲取手機號授權用戶登錄功能
java實現微信小程序登錄態維護的示例代碼
詳解微信小程序 登錄獲取unionid
關于在vue-cli中使用微信自動登錄和分享的實例
微信小程序 新建登錄頁并實現tabBar隱藏
微信小程序中做用戶登錄與登錄態維護的實現詳解
第三方網站微信登錄java代碼實現
微信小程序實戰之登錄頁面制作(5)
文章同步發布: https://www.geek-share.com/detail/2755097818.html
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。