前言
最近給app加入三方登錄,由於比較多,所以就用的友盟統一登錄,會比一個一個配置方便點
正文
先說QQ,微信,微博:
國內QQ,微信,微博三方登錄其實還行,並沒有太多坑,文檔也挺完善的.
但是需要注意的就是你後臺配置的簽名和當前的簽名是否一致,然後appid和appkey是否配置正確(比如粘貼的時候多粘了一個空格)
Twitter,Facebook,Instagram:
由於之前沒有弄過Twitter,Facebook,Instagram的三方登錄,所以配置過程一波三折
首先網絡暢通(最起碼測試機要暢通)
然後一般app後臺配置沒上線時都要求用測試賬號(比如申請三方後臺所用的賬號)
Twitter:
配置完成後,需要調用
UMShareAPI.get(this).doOauthVerify();
而下面的這個api無法使用....
UMShareAPI.get(this).getPlatformInfo();
授權數據獲取(需要accessToken和tokenSecret,但現在友盟不會直接給你)
openId 的key爲: user_id
獲取accessToken和tokenSecret,如下代碼(debug了半個小時才找到..)
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (THIRD_PARTY_TYPE == Ids.ThirdPlat_Twitter) {//如果是Twitter
//EXTRA_TOKEN=tk
//EXTRA_TOKEN_SECRET=ts
extra_token = data.getStringExtra("tk");
extra_token_secret = data.getStringExtra("ts");
}
UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);
}
獲取授權成功後要及時的移除授權,否則下一次調用授權會失敗
UMShareAPI.get(FirstLoginActivity.this).deleteOauth();
Facebook:
facebook還好,只需要注意測試用註冊後臺app的賬號登錄
然後 openId 的key爲: uid accessToken 的key爲 access_token
Instagram:(最6的登錄)
這是我見過最6最有自己思想的登錄 \手動滑稽 (沒法在友盟上獲取,得自己寫)
首先先使用WebView加載一段網址:
https://api.instagram.com/oauth/authorize/?client_id=你的appid&redirect_uri=你的回調地址&response_type=token
ps:回調地址我覺得可以隨便傳
然後獲取重定向後的地址,僞代碼:
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
Uri url1 = request.getUrl();
if (url1 == null)
return false;
String url = url1.toString();
//他會給你重定向爲 你的回調地址/#access_token=xxxxxxxxxxxxxxxx 重定向後的鏈接
if (url != null && url.indexOf("你的回調地址/#access_token=") == 0) {
String accessToken = url.replace("你的回調地址/#access_token=", "");//這樣就獲取到了你的access_token
}
return false;
}
});
然後就獲取到了access_token
Instagram三方登錄參考:https://blog.csdn.net/qq_38402659/article/details/89705419