3

アプリを Google API と統合しようとしています。Google Tasks などです。

Google Play サービスの前は、Java用のGoogle API クライアント ライブラリとAccountManagerを使用して、API の OAUTH トークンを取得してアクセスしていました。

この方法の長所は、次のことができることです。

  • Java クライアント API をスムーズに使用して、アプリが必要とする可能性があるすべての API メソッドにアクセスします。

短所は次のとおりです。

  • 認証ダイアログは非常に見栄えが悪く、ユーザーを混乱させます (Google IO Play サービス セッションで述べたように)
  • アプリにあらゆる種類の権限を追加する必要があります。

「Google Play サービス」がすべてを変えたと思います。

  • プレイ サービスから直接取得され、最終的にはユーザーから取得されるため、アプリの許可は必要ありません。
  • また、認証をユーザーにとってより明確にする新しい美しいAccountPickerも提供しました。

しかし、Java クライアント ライブラリ API メソッドへのアクセスの容易さは失われます!!! すべてのリクエストを自分で作成する必要があります。

問題は、再生サービスを使用して OAUTH トークンを認証および要求し、その後クライアント ライブラリ API を使用して実際の API メソッドにアクセスするための最良の方法は何ですか?

4

1 に答える 1

3

(Google Play サービスから) の結果を ( Google API クライアント ライブラリからGoogleAuthUtil.getToken) に直接渡すことができるはずです。GoogleCredential.setAccessToken

後者の例はTasksSample.javaにあります。実際、AccountManager.getAuthTokenとのGoogleAuthUtil.getTokenAPI は非常に似ているため、非同期と同期の違いを除けば、Tasks サンプルを変更して Google Play Services を使用することはそれほど難しくありません。

非常に大まかな疑似コードは次のようになります。

...
// this should all be in a separate thread (e.g. AsyncTask)
final String token = GoogleAuthUtil.getToken(context, email, scope);
GoogleCredential credential = new GoogleCredential();
credential.setAccessToken(token);

Tasks service = new Tasks.Builder(transport, jsonFactory, credential)
    .setApplicationName("Google-TasksAndroidSample/1.0")
    .setJsonHttpRequestInitializer(new GoogleKeyInitializer(ClientCredentials.KEY))
    .build();

List<String> result = new ArrayList<String>();
Tasks.TasksOperations.List listRequest = service.tasks().list("@default");
listRequest.setFields("items/title");
List<Task> tasks = listRequest.execute().getItems();
...
于 2012-11-02T14:26:38.223 に答える