web-dev-qa-db-ja.com

Google APIへのアクセス-GoogleAccountCredential.usingOAuth2 vs GoogleAuthUtil.getToken()

最近、Android特にAnalytics、AdSense、およびTasks APIでGoogle APIを使用して多くの作業を行っています。

Googleが提供するいくつかのサンプルを見ましたが、このステートメントを使用してGoogleAccountCredentialオブジェクトを取得しています。

https://code.google.com/p/google-api-Java-client/source/browse/tasks-Android-sample/src/main/Java/com/google/api/services/samples/ tasks/Android/TasksSample.java?repo = samples

credential = GoogleAccountCredential.usingOAuth2(this, Collections.singleton(TasksScopes.TASKS));

ただし、次のようなドキュメントを参照する場合:
http://developer.Android.com/google/auth/http-auth.html
http://developer.Android.com/google/play-services/auth.html

どちらも、トークンの取得に使用される以下のメソッドに言及しています。
token = GoogleAuthUtil.getToken(mActivity, mEmail, mScope);

どのシナリオでどのシナリオを使用するのか、またその理由はわかりません。方法番号を使用しています。 1正常に、設定でトークンを永続化する必要なし(これはGoogleAccountCredentialによって自動的に行われると思います)

  1. なぜ誰かが2番目ではなく最初の方法を使用するのか教えてもらえますか?

  2. 最初の方法で認証トークンにアクセスするにはどうすればよいですか?

38
Madhur Ahuja

Java用Google APIクライアントライブラリ は、名前がGoogle APIにアクセスするためのライブラリを示唆しており、Java(一般的に)および= Android while Google Play Services および GoogleAuthUtil はAndroidでのみ使用可能です。

プロジェクトの wikiページ を見ると、ウィキは AccountManager がGoogleアカウントの処理に使用されることを示唆しているため、Google APIクライアントライブラリとGoogleAuthUtilの関係を理解することは困難です。 GoogleAuthUtilについてはまったく言及していません。

ただし、コードとその問題トラッカーを少し掘り下げると、 tasks sample 実際にリンクされていることがわかります ses GoogleAuthUtil バージョン1.12. = GoogleAuthUtilのサポートが 追加 の場合のGoogle APIクライアントライブラリの。

Wikiは、GoogleAuthUtilが利用可能になる前にOAuth2認証を行う方法であり、Wikiの一部がまだ更新されていないため、おそらくGoogleAuthUtilではなくAccountManagerに言及しています。

AccountManagerとGoogleAuthUtilの違いの詳細については、以下を参照してください。 一言で言えば、OAuth2リクエストgetAuthTokenとgetTokenを使用することとの違いは何ですか

簡単に言えば、Google APIクライアントライブラリは、Googleのサービスと対話するためのクロスプラットフォームライブラリであり、AndroidバージョンはGoogleAuthUtilを使用して実装されます。

なぜ誰かが2番目ではなく最初の方法を使用するのか教えてもらえますか?

Google APIクライアントライブラリを使用する理由

  • Android以外のプラットフォーム用に開発している場合、GoogleAuthUtilはAndroid特定のライブラリであるため使用できません。
  • クロスプラットフォームアプリケーションを開発している場合、Androidおよび他のプラットフォームの両方の共有コードでGoogle APIクライアントライブラリを使用できます。
  • Googleの多くのサービスと頻繁にやり取りする場合、このライブラリを使用すると作業が簡単になります。
  • 既にこれを使用していて、望みどおりに動作する場合、GoogleAuthUtilのラッパーであるため、使用を継続しても実際には欠点はないので、AccountManagerまたはAccountManagerに基づいた他のライブラリを使用する場合と比較してGoogleAuthUtilのすべての利点が得られます。

GoogleAuthUtilを使用する理由

  • これを使用するには、Google Play Services以外のライブラリや外部依存関係は必要ありません
  • 追加のライブラリを含める必要がないため、アプリのフットプリントを小さくする必要があります。
  • Googleとのやり取りが制限されている場合は、別のライブラリを介さずに直接GoogleAuthUtilを使用する方が簡単な場合があります。
  • GoogleAuthUtilをそのまま使用するのはそれほど難しくないはずです。そのため、ライブラリをラップして簡単に使用することはそれほど簡単ではないかもしれません。

どのシナリオでどのシナリオを使用するのか、またその理由はわかりません。方法番号を使用しています。 1正常に...

Google APIクライアントライブラリを使用していて、それが正常に機能している場合、引き続き使用しない理由はわかりません。

ただし、Googleのサービスと対話する必要があるAndroid(のみ)アプリケーションを作成する場合、GoogleAuthUtilを直接使用する可能性があります。

...プリファレンスでトークンを保持する必要はありません(これはGoogleAccountCredentialによって自動的に行われると思います)

はい、これはGoogleAuthUtilによって自動的に処理され、GoogleAuthCredentialはGoogleAccountCredentialによって使用されます。

最初の方法で認証トークンにアクセスするにはどうすればよいですか?

GoogleAccountCredentialオブジェクトでメソッド getToken() を呼び出すことができるはずです。

43
nibarius

Google Play Services client libraryはAndroidデバイス専用に書かれており、個々のGoogleサービスと一貫したユーザーインターフェイスを提供して、ユーザーの資格情報でこれらのサービスにアクセスするための承認を取得します。

Google APIs Client Library for Javaは、すべての種類のアプリケーション(Web、インストール済み、またはAndroidアプリケーション)からGoogleサービスにアクセスするための汎用ライブラリです。

Androidに戻って、使用するGoogle APIがGoogle Play services libraryに含まれていない場合、適切なREST APIを使用して接続できますが、OAuth 2.0トークンを取得する必要があります。

トークンを取得するには、次のいずれかを実行できます-

  • OAuthのGoogle APIクライアントライブラリのJava 2.0ライブラリを直接使用します(Androidには推奨されません)

  • または、GoogleAuthUtilとAccountPickerを使用して、Google Play開発者サービスライブラリの認証部分を活用します。 REST APIのGoogleによる認証の読み取り。GoogleAuthUtil.getToken()トークンの有効期限をキャッシュおよび管理し、それ自体を更新します。ただし、ネットワークエラー/サーバー負荷の場合は、サーバーが要求であふれないように、トークンを再試行する前に指数バックオフアルゴリズムを使用する必要があります。)

  • または、Java用Google APIクライアントライブラリに付属のgoogle-api-client-Android-1.19.0.jarにパッケージ化されているGoogleAccountCredentialを使用します。パッケージには、Google Play servicesクライアントライブラリおよび GoogleAccountCredential is just a wrapper に基づくGoogleAuthUtilおよびAccountPickerに基づくユーティリティが含まれています。これにより、トークン管理をGoogleAccountCredentialに委任しながら、同じ一貫した認証フローと、Google Play開発者サービスクライアントライブラリに付属する標準のアカウントピッカーダイアログを使用できます。例については、 this を参照してください。

9
nightlytrails

メソッド番号1(com.google.api.client.googleapis.extensions.Android.gms.auth。*)は、Googleのより一般的なクロスプラットフォームアカウント管理フローの一部であり、メソッド番号2(com.google.Android.gms。 auth.GoogleAuthUtil)はAndroid固有です。さまざまなAndroid Google API、メソッド2、ラップしてメソッド1を簡素化します。たとえば、 Google+のドキュメントの2番目の段落 は、「Google+サインインボタンはユーザーを認証し、OAuth 2.0フローを管理します。これにより、Google APIとの統合が簡単になります。

可能な限り、Android特定のメソッド、token = GoogleAuthUtil.getToken(mActivity, mEmail, mScope),を使用します。

2
GLee