1 什麼是 OAuth
OAuth
: OAuth
(開放授權)是一個開放標準,允許用戶授權第三方網站訪問他們存儲在另外的服務提供者上的信息,而不需要將用戶名和密碼提供給第三方網站或分享他們數據的所有內容。
OAuth
適用於大型的互聯網公司,需要有接口文檔以及不同的測試環境,而小公司更多選擇AccessToken
。
2 OAuth2.0
對於用戶相關的 OpenAPI
(例如獲取用戶信息,動態同步,照片,日誌,分享等),爲了保護用戶數據的安全和隱私,第三方網站訪問用戶數據前都需要顯式的向用戶徵求授權。
QQ 登錄 OAuth2.0
採用 OAuth2.0
標準協議來進行用戶身份驗證和獲取用戶授權,相對於之前的 OAuth1.0
協議,其認證流程更簡單和安全。
3 OAuth2.0
總體處理流程
3.1 概念
參數 | 說明 |
---|---|
appid |
|
appsecret |
|
access_token |
|
openid |
|
回調地址 |
|
授權地址 |
3.2 步驟
- 在微信開發平臺申請對應的
appid
信息 - 網站生成登錄授權鏈接
- 用戶確認微信登錄後,獲取
code
,並跳轉到回調地址(需要配置域名授權) - 通過
code
換取網頁授權access_token
- 使用
access_token
+openid
獲取用戶信息 - 拉取用戶信息(需
scope
爲snsapi_userinfo
)
4 實現微信授權獲取信息
微信網頁授權地址:
https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html
https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login
- 填寫網頁授權回調地址權限
- 生成網頁授權地址
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx5c43fde3c9733d9e&redirect_uri=http://meitedu.s1.natapp.cc&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect
- 跳轉到回調地址獲取授權碼
http://snow.s1.natapp.cc/?code=061yIRgM13IOc41ZQveM1tODgM1yIRge&state=STATE
- 通過
code
換取網頁授權access_token
https://api.weixin.qq.com/sns/oauth2/access_token?appid=wx5c43fde3c9733d9e&secret=b8b217126c33a5fb7074927d5e72a81a&code=061WfM4E0TABnc2Cv04E02Lb5E0WfM4b&grant_type=authorization_code
- 拉取用戶信息(需
scope
爲snsapi_userinfo
)
https://api.weixin.qq.com/sns/userinfo?access_token=11_ZsmU50peG5LkOxn6XiFwXl9PRmlAlrFvWZ9fgxd3OM-vbiAHt_uf7gqG9iA9MnfIqf375eI8rkxf6GyqdsAkWw&openid=okYSmtzp4wWCrDCncMfGSRECVSeM&lang=zh_CN
5 聯合登錄
就是拿到 openid
後,直接到數據庫中查找 openid
,然後找到對應的用戶