有了上面Oauth原理,HTTP操作,AsyncTask的基礎 就可以在Android中進行認證的操作了
1 對Request Token進行授權
在retrieveRequestToken中有一個參數(第二個)是回調URL
該方法首先申請到一個未授權的requestToken 然後將appkey和secret存到comsumer 並返回用於授權的地址
通過uri 隱式啓動Activity(打開了授權網頁)
在完成了Oauth認證第二第二步以後(網頁上點授權後),會訪問callback的url(即第二個參數)
回調會啓動manifest中配置了<data>匹配callback成功的Activity
例如<data android:scheme="x-oauthflow" android:host="callback" />
這裏是一個比較特別的地方
2 獲取Access Token
在啓動新的Activity後
public void onNewIntent(Intent intent){
SharedPreferences prefs=PreferenceManager.getDefaultSharedPreferences(this);
final Uri uri=intent.getData();
if(uri!=null && uri.getScheme().equals(Constants.OAUTH_CALLBACK_SCHEME)){
new RetrieveAccessTokenTask(this,consumer,provider,prefs).execute(uri);
}
finish();
}
在Task中
通過uri.getQueryParameter(KEY); 得到鍵值對的值
通過provider.retrieveAccessToken(consumer,verifle)請求accessToken和accessTokenSecret 被放到了consumer對象中
將Token和TokenSecret記錄到prefs中