去年做了一陣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分享)!
![]() |
![]() |


