1. 第三方登錄的兩種情況
1. app 調(diào)用用 QQ/微信 sdk 實(shí)現(xiàn)第三方登錄
流程如下:
- 先在 gradle 中配置 QQ/微信 的 sdk 的 appid 和 appSecret
- 然后代碼調(diào)用 QQ/微信 的 sdk 的登錄授權(quán)代碼,得到 access_token,openId
- 通過 access_token 和 openId 調(diào)用 app 自己后臺(tái)的接口獲取應(yīng)用自己的 accessToken (也叫 token) 和 accessSecret
2. app 的 webview 內(nèi)嵌其他網(wǎng)頁
流程如下:
- webview 中的 js 先調(diào)用原生的
getXXX()方法,請(qǐng)求原生的接口獲取 openId(參數(shù)傳 app 自己的 accessToken 和 accessSecret,再傳一個(gè) appId 用來標(biāo)識(shí)當(dāng)前 webview 中請(qǐng)求接口的是哪個(gè)平臺(tái)) - 原生調(diào)用后臺(tái)接口獲取 openId 后,通過調(diào)用 js 的
setXXX()方法把 openId 設(shè)置到 webview 的 js 里 - js 通過 openId 獲取到自己服務(wù)器的 accessToken 和 accessSecret,從而完成了第三方登錄
2. 登錄兩種情況的比較
情況二和情況一基本相同,不同的是:
- 情況一 app 是第一方,QQ/微信是第三方,根據(jù) openid 獲取最后的 accessToken 和 accessSecret 是 app 原生做的
- 情況二 app 才是第三方,webview 中的其他平臺(tái)是第一方,根據(jù) openid 獲取最后的 accessToken 和 accessSecret 是 js 其他平臺(tái)做的
3. 總結(jié)
先通過第三方獲取 openId,然后根據(jù) openId 請(qǐng)求自己后臺(tái)的接口獲取最后的 accessToken 和 accessSecret,之后的業(yè)務(wù)請(qǐng)求都帶上 accessToken 和 accessSecret 從而完成請(qǐng)求。