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
沒有留言:
張貼留言