3

OAuth2 に関する Google のドキュメントではGoogleCredential、認証トークンを使用して を構築する方法が次のように説明されています。

資格証明および資格証明ストア

特に、このコード スニペットが提供されます。

GoogleCredential credential = new GoogleCredential().setAccessToken(accessToken);
Plus plus = Plus.builder(new NetHttpTransport(), new JacksonFactory())
    .setApplicationName("Google-PlusSample/1.0")
    .setHttpRequestInitializer(credential)
    .build()

この方法でを構築しようとすると、GoogleCredential簡潔に通知されます。

Please use the Builder and call setJsonFactory, setTransport and setClientSecrets

例外のメッセージ フィールド。この先週のライブラリをダウンロードしたので、何が起こっているのかわかりません。ドキュメントは単に時代遅れですか?もしそうなら、既存の認証トークンと更新トークンから構築するためのベストプラクティスとして、どの方法がこれに取って代わりましたか?

ちなみに、Builder を使用できなかった理由は、Google アプリケーション コンソールからクライアント シークレットが提供されなかったためです。Androidアプリなどには提供されなくなったとのことです。 setClientSecrets(...)、したがって、呼び出すことができませんでした。

4

3 に答える 3

1

私は最近この問題に遭遇し、私の場合の解決策を見つけました。

実行条件は次のとおりです。プログラムは Android 4.0 で実行されており、Google ドライブ SDK を使用していません。これは、プログラムによって作成されたものではない Google ドライブ上のファイルをプログラムが読み取れないためです。私は com.google.api.services.drive.* と com.google.api.client.googleapis.auth.oauth2.* Java ライブラリを使用しています。

この問題が発生したコードは次のようになります。

GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
        httpTransport, jsonFactory, CLIENT_ID, CLIENT_SECRET, Arrays.asList(DriveScopes.DRIVE))
    .setAccessType("offline")
    .setApprovalPrompt("auto").build();


GoogleTokenResponse response = null;
try {
    response = flow.newTokenRequest(authorizationCode).setRedirectUri(REDIRECT_URI).execute();
} catch (IOException e) {
    e.printStackTrace();
}

GoogleCredential credential = new GoogleCredential().setFromTokenResponse(response);

しかし、上記のコードは setAccessType("online"); へのパラメーターの場合にうまく機能しました。

この問題の解決策は、必要な accessType の種類によって異なります。

accessType として「onLine」が必要な場合は、setFromTokenResponse() を使用しても問題ありません。

アクセスタイプとして「オフライン」が必要な場合は、ブローコードを使用する必要があります:

GoogleCredential credential = new GoogleCredential.Builder().setTransport(httpTransport)
        .setJsonFactory(jsonFactory)
        .setClientSecrets(CLIENT_ID, CLIENT_SECRET)
        .build()
        .setFromTokenResponse(response);

言及する必要があることの 1 つは、GoogleTokenResponse と GoogleAuthorizationCodeFlow の作成で accessType 設定を一貫させる必要があることです。

于 2014-08-15T20:54:04.007 に答える
0

Google Dev Consoleで Android アプリ キーを設定する必要があります。

  1. プロジェクトを選択し、[API & Auth] を選択してから、[Credentials] をクリックします。
  2. 新しいクライアント ID を作成します (ただし、他のクライアント ID があります)
  3. インストール済みアプリを選択 -> android
  4. パッケージ名とSHA1を正しく入力してください
  5. 新しいキーを作成します (ただし、他のクライアント キーがあります)
  6. Androidキーを選択
  7. 次のように SHA1;packageName を入力します。45:B5:E4:6F:36:AD:0A:98:94:B4:02:66:2B:12:17:F2:56:26:A0:E0;com.example

あなたの問題は自動的に解決されます。デバッグ キーストアとリリース キーストアの両方を使用して、必ずクライアント ID とキーを作成してください。

于 2014-11-21T08:54:46.270 に答える
-3

正しくセットアップするための段階的な手順については、Google ドライブ SDK ドキュメントの Android クイックスタート サンプルを確認してくださいGoogleCredential

https://developers.google.com/drive/quickstart-android

于 2013-02-25T18:42:29.223 に答える