去年做了一陣APP相關的開發,經常遇到第三方登陸的需求,比如微信、微博、fb的第三方登陸等等,其實主要的流程都大同小異,這裡就以微信為例來介紹,希望對大家有幫助。
微信開放平臺(open.weixin.qq.com)
- 註冊開發者賬號,填寫基本資訊,例如郵箱,郵箱啟用
- 完善開發者的資料,包括真實姓名,手機,地址等
- 騰訊稽核開發者資質,稽核費用每年300
- 在管理中心建立應用,分移動應用、網站應用等不同型別
- 填寫應用的名稱、簡介、logo、應用的官方網站等資訊
- 騰訊稽核,7個工作日
- 通過後可獲得該應用的APPID、AppSecret
- 並且可在應用詳情中申請開通微信登入、微信支付等
呼叫流程
1. 獲取授權碼(code)
1.1. 移動應用呼叫SDK
1.2. 網站應用呼叫
https://open.weixin.qq.com/connect/qrconnect
並傳入APPID,及重定向地址,生成二維碼地址。使用者使用微信掃描二維碼並同意授權後,跳轉至重定向地址,並且帶來了授權碼。
2. 使用授權碼獲取access_token
2.1. 通過呼叫
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
返回結果類似如下:
{
"access_token":"ACCESS_TOKEN",
"expires_in":7200,
"refresh_token":"REFRESH_TOKEN",
"openid":"OPENID",
"scope":"SCOPE",
"unionid": "UNIONID"
}
2.2. access_token有效期
有效期較短(2小時),refresh_token有效期一個月,可以使用refresh_token重新整理access_token,避免頻繁要求使用者同意授權。
https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=APPID&grant_type=refresh_token&refresh_token=REFRESH_TOKEN
2.3. 多個應用的情況
如果同時有多個應用,同一個微信使用者在不同的應用上登入會生成不同的openid,但unionid相同,若需要同一微信使用者對映到後臺的同一賬戶上,應使用unionid。
3.通過access_token獲取使用者資訊(如暱稱等),
https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID"
備註
以上呼叫步驟可以完全由前端(APP、WEB)完成,不過一般應用後臺有自己的一套使用者系統,所以應用後臺可以在不同的步驟介入,例如可以在前端活動使用者資訊後呼叫後臺進行入庫儲存,或者也可已在獲得access_token後介入,由後臺訪問微信獲取使用者資訊。
好了,今天就先到這兒,cheers!
送書了,送書了,沒有套路,沒有套路,關注公眾號“程式設計師雜書館”,就送出O'Reilly《Spark快速大資料分析》紙質書(亦有一批PDF分享)!