本文講的是如何通過Oauth2.0對第三方APP授權,Oauth2.0的授權流程,原理的這裡就不介紹了,百度搜就有了。
這裡主要講的是怎麼在自己的APP中添加代碼,擷取access token。
第一步:下載下傳SDK。
登入open.weibo.com,在文檔--資源下載下傳--SDK,下載下傳新浪提供的SDK,
第二步:建立APP,申請app key, app ,redirect_url
登入http://open.weibo.com/development,點選建立應用,這裡怎麼填呢,參考http://open.weibo.com/wiki/新手指南,
建立成功之後,在我的應用中,應用資訊--基本資訊中就可以看到自己的app key和app secret。
進入進階資訊中,檢視Oauth2.0授權設定,點右邊的編輯,
這裡可以選擇輸入任意位址(我這裡是填了我的部落格位址,畢竟我隻是測試而已),這裡需要記住這個回調位址。
第三步:添加代碼
解壓剛剛下載下傳的SDK包,其中有兩個檔案,一個是app_signatures.apk,一個是weibosdkcore.jar(我不明白為什麼要做成個包),
把weibosdkcore.jar添加到你的APP工程裡,将app_signatures.apk安裝到調試你的APP的平台上,虛拟機或者真機。
授權部分其實看一下weibo sdk的方式就可以了,我這裡就貼出代碼,
當你需要跳轉到授權頁面的時候,添加以下代碼:
mSsoHandler = new SsoHandler(OauthActivity.this, mWeiboAuth);
mSsoHandler.authorize(new AuthListener());
這裡的AuthListener在下面定義的一個内部類
/**
* 微網誌認證授權回調類。 1. SSO 授權時,需要在 {@link #onActivityResult} 中調用
* {@link SsoHandler#authorizeCallBack} 後, 該回調才會被執行。 2. 非 SSO
* 授權時,當授權結束後,該回調就會被執行。 當授權成功後,請儲存該 access_token、expires_in、uid 等資訊到
* SharedPreferences 中。
*/
class AuthListener implements WeiboAuthListener {
@Override
public void onComplete(Bundle values) {
// 從 Bundle 中解析 Token
mAccessToken = Oauth2AccessToken.parseAccessToken(values);
if (mAccessToken.isSessionValid()) {
// token拿到并合法
// 授權結束,擷取到accesstoken後,要做什麼?
} else {
// 以下幾種情況,您會收到 Code:
// 1. 當您未在平台上注冊的應用程式的包名與簽名時;
// 2. 當您注冊的應用程式包名與簽名不正确時;
// 3. 當您在平台上注冊的包名和簽名與您目前測試的應用的包名和簽名不比對時。
String code = values.getString("code");
String message = getString(R.string.toast_auth_failed);
if (!TextUtils.isEmpty(code)) {
message = message + "\nObtained the code: " + code;
}
Toast.makeText(OauthActivity.this, message, Toast.LENGTH_LONG)
.show();
}
}
@Override
public void onCancel() {
Toast.makeText(OauthActivity.this, R.string.toast_auth_cancel,
Toast.LENGTH_LONG).show();
}
@Override
public void onWeiboException(WeiboException e) {
Toast.makeText(OauthActivity.this,
"Auth exception : " + e.getMessage(), Toast.LENGTH_LONG)
.show();
}
}
第四步:添加android包名和android簽名。
運作剛剛裝在android系統上的,app_signatures.apk,這個時候,你需要確定你的APP已經安裝在該系統中,
輸入APP的包名,點選生成,如果成功,則可以擷取到一串md5,拿着這個包名和md5,回到新浪開放平台,
我的應用-基本資訊,點選編輯,輸入android包名,android簽名,再輸入下載下傳位址和描述,點儲存,即可。
然後你的APP就可以通過剛剛添加代碼的方式去擷取access token了。
這文章也隻是給自己做個筆記,因為本人很健忘,寫在為知筆記裡,也懶得翻,寫在blog上比較好。
謝謝。