背景
最近手頭一個項目需要實現用戶在網站的第三方登錄(微信和微博),后端框架laravel5.4。
實現過程以微信網頁版第三方登錄,其他於此類似,在此不做重復。
准備工作
網站應用微信登錄是基於OAuth2.0協議標准構建的微信OAuth2.0授權登錄系統。
在進行微信OAuth2.在進行微信OAuth2.0授權登錄接入之前,在微信開放平台注冊開發者帳號,並擁有一個已審核通過的網站應用,並獲得相應的AppID和AppSecret,申請微信登錄且通過審核后,可開始接入流程。
總結下來就是:
- 進入微信開放平台注冊開發者賬號
- 根據項目類型創建應用,再此我創建的是網站應用.
- 接入微信登陸功能,讓用戶可使用微信登錄你的網站應用
- 獲得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。
安裝相關依賴
相關配置
1. 設置app/config.php
添加providers:
添加aliases:
2. 配置config/services.php
3. 設置app/Providers/EventServiceProvider.php
添加事件監聽
5. 編寫WeixinController
訪問auth/weixin,獲得返回數據。
常見錯誤
1. 微信授權回調域不符(redirect_uri不符),參見下面規范:
2. 執行過程中出現一下錯誤:
解決:
通過stateless()方法禁止會話狀態驗證
其他第三方登錄在此不做贅述。