OAuth 認證部份可以透過 http://www.flickr.com/services/api/auth.oauth.html 了解.
以下是實作部份.
最主要部份是上面網址的 2 -> 3, 要怎麼去收到使用者輸入後所得到的 verifier 來取得 access token.
這邊我們使用 scribe 套件.
OAuthService service = new ServiceBuilder()
.provider(FlickrApi.class)
.apiKey(YOUR_API_KEY)
.apiSecret(YOUR_API_SECRET)
.callback(CALLBACK_SCHEME)
.build();
這邊 callback_scheme 可以隨便自己定義, 但記得使用這樣的格式 'xxxx://xxxxx'.
callback 是當使用者輸入他的帳號密碼後, flickr api 會呼叫 callback 所指向的位址.
而我們就可以透過此位址來得到 verifier 以便之後取得 access token.
以下就可以看到回傳的格式, 這樣我們很方便可以透過 Uri 來取得 oauth_verifier
mWebView.setWebViewClient(new WebViewClient() {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
mProgress.setVisibility(View.VISIBLE);
mProgress.setIndeterminate(false);
mProgress.setProgress(0);
}
@Override
public void onPageFinished(final WebView view, String url) {
mProgress.setVisibility(View.GONE);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url == null) {
return true;
}
if (!url.startsWith(CALLBACK_SCHEME)) {
/**
* if this is not our callback scheme, just pass it to the webview
*/
view.loadUrl(url);
return true;
}
//tw.clotai.oauthexample:callback?oauth_token=72157638471772995-ad1973723cfdceb4&oauth_verifier=b0ef999e41547457
Uri uri = Uri.parse(url);
String verifier = uri.getQueryParameter("oauth_verifier");
return true;
}
});
這範例很簡單, 主要部份只要注意這邊即可. 其他應該也不用多說.
完整的原始碼: OAuthExample.zip
沒有留言:
張貼留言