2011-08-06 10 views
6

OAuth 1.0aを使用してAndroidアプリケーションをOAuth 2.0に移行しようとしています。 (Java/Android用のGoogle APIクライアントライブラリをOAuth 2.0のニーズに合わせて使用​​する)。AndroidでOAuth 2.0を使用してGoogle APIを使用する最善の方法

使いやすさの側面も考慮したAndroidプラットフォームでOAuth 2.0を使用してGoogle APIにアクセスするための最良の/推奨の解決策は何ですか?ユーザーはAndroidアプリとシームレスに統合して簡単にアクセスを自動化できるはずです。

アプリケーションは現在、OAuth 1.0 Webベースのフローを使用しています。ここでは、アプリケーションがブラウザをポップしてユーザーにアクセスを許可し、カスタムリダイレクトURIを使用すると、アプリケーションはアクセストークンを取得できます。それはかなりうまくいくが、Webページを表示するためにブラウザをポップするために私のアプリケーションを残す必要があるという事実は気に入らなかった。私はOAuth 2.0がこれを回避し、より良いユーザーエクスペリエンスを可能にすると考えていました。

ウェブブラウザーはなく、Androidと密接に結びついているので、私はAdroid AccountManager-OAuth2 integration as outlined at Google IOを見ていましたが、それは単にそれほどうまくいきません。それは文書化されておらず、未来のために実行可能な選択肢が残るかどうか不明である。

標準のOAuth 2.0 Webフローを調査し始めました。ここで

私は2つのオプション持っているように見える:インストール済みアプリとして

設定OAuth 2.0のクライアントを、そして壷を使用:IETF:WG:OAuthの:2.0:OOB URIをリダイレクトします。

私のユーザーにコピーしてアプリにコードを貼り付けさせることはありません。これはユーザーフレンドリーではありません。

Using OAuth 2.0 to Access Google APIs docs URLを解析するためにページのタイトルをポーリングする方法がいくつかありますが、それに多くのユーザビリティの問題もあります。この種の配管コード。クライアントライブラリが存在すれば、私のためにそれを行うことができます。私はこれをさらに調査してうれしいですが、今はこのオプションを削除しました。

OAuth 2.0クライアントをWebアプリケーションとして設定し、リダイレクトURIを使用します。

OAuth 2.0では非標準スキームが禁止されています。以前は、xoauth:// callbackのようなものを使用することは可能でしたが、これはもう許可されません。 http://mysite.com/oauth2/callbackのようなリダイレクトURIを設定すると、適切なインテントフィルタが設定されているにもかかわらず、Google OAuth 2.0ページがリダイレクトされたときにAndroidが自分のアクティビティを開くことができません。 http://mysite.com/oauth2/callbackはブラウザに表示されます。

次は

Intent i = new Intent(Intent.ACTION_VIEW,Uri.parse("http://mysite.com/oauth2/callback")); 
startActivity(i); 

を働くんが、GoogleのOAuthの2ページが同じURLにリダイレクトするとき、それは単に、ブラウザに表示されます。

これが機能しても、ユーザーにはまだ選択肢のポップアップが表示されます(ブラウザで開くか、Androidのアクティビティを使用して開きます)。ユーザビリティの観点からは、これも受け入れられません。

私はここで概説したものよりも優れたソリューションを探しています。

よろしく、 デイビー

答えて

13

私はGoogleの認証URLをロードするためのWebViewコンポーネントを使用して終了。 WebviewClientを使用して、Webviewに読み込まれているページをインターセプトできました。そのため、ユーザーが承認リクエストを受け入れるか拒否すると、フローを続行できました。

ユーザーが受け入れる場合、GoogleがリダイレクトするURLには「コード」リクエストパラメータが含まれており、アプリケーションはこれをOAuth 2.0トークンと交換できます。 ユーザーが受け入れない場合、GoogleがリダイレクトするURLには「エラー」リクエストパラメータが含まれており、アプリケーションは不快なシナリオを処理できます。

私は、ブログの記事のすべてを書き留めました:Oauth 2.0 flow in Android

ポストも緯度APIでOAuth 2.0のフローを使用してサンプルAndroidアプリが含まれています。 Sample code is available in GitGub

+0

私は、[Picasaサンプル](http://samples.google-api-java-html)で[AccountManager](http://developer.android.com/reference/android/accounts/AccountManager.html) client.googlecode.com/hg/picasa-android-sample/instructions.html?r=default)。あなたが言及したビデオ(Google I/O 2011)は良い出発点であるようです。 Picasaの例は私には良いことです。現時点ではまだOAuth 2/AccountManagerで作業していません。しかしPicasaのソースを見ると、それほど難読化されていないと思う。あなたはそれを試しましたか? –

+0

これはうまくいくはずですが、pre-ICSでは承認画面は実際には使いやすいものではありません。生のOauth2スコープをリストします。 ICSには人間が読める名前があります。しかし、Webベースのアプローチで得られるブランディング(アプリアイコン)は得られません。 https://plus.google.com/u/0/112215288642007559493/posts/Zme5LNLwCDP – ddewaele

+0

アプリが市場に出回っている場合は、そのリンクを教えてください。これが私的な質問であれば申し訳ありませんが、いいえ、私はそれを理解するでしょう... –

関連する問題