0

私は次の例を実行しようとしています:

https://code.google.com/p/google-api-java-client/source/browse?repo=samples#hg%2Ffusiontables-cmdline-sample

これは基本的に、Fusion API を認証して使用する方法の例です。私はそれを機能させることができません...この時点で:

// authorize
return new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver()).authorize("user");

ブラウザに「Error:redirect_uri_mismatch」が表示されます。

ここで奇妙なのは、Oauth を使用して認証する他の例 (google plus API とクラウド ストレージのもの) が、これと同じアプローチを使用していないことです。基本的には、一度サービス アカウントにダウンロードできる JSON ファイルを使用することにあります。 API コンソールから作成されています。

実際、この例のアプローチを使用する質問があります。

Google フュージョン テーブル 400 invalid_grant

私の主な質問は..どちらが正しいですか? これについてはよくわかりません

2 つ目は...この例では、JSON ファイルで client-secret という項目を探しますが、これはありません。これがコードが機能しない原因だとは思いませんが、このクライアント シークレットは何なのかと思っています...

続行方法に関するいくつかの洞察をいただければ幸いです

ありがとう!アレックス

4

1 に答える 1

0

誰かが私と同じ状況にある場合...私が見つけた解決策を投稿します。私が基本的に行ったことは、例を変更したことです (Christian Junk の仕事に特に感謝します)。認証に関しては、他の例 (ストレージとプラスのもの) のように見えます。

    HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();

    // check for valid setup
    if (SERVICE_ACCOUNT_EMAIL.startsWith("Enter ")) {
      System.err.println(SERVICE_ACCOUNT_EMAIL);
      System.exit(1);
    }
    String p12Content = Files.readFirstLine(new File("key.p12"), Charset.defaultCharset());
    if (p12Content.startsWith("Please")) {
      System.err.println(p12Content);
      System.exit(1);
    }
    // service account credential (uncomment setServiceAccountUser for domain-wide delegation)
    GoogleCredential credential = new GoogleCredential.Builder().setTransport(HTTP_TRANSPORT)
        .setJsonFactory(JSON_FACTORY)
        .setServiceAccountId(SERVICE_ACCOUNT_EMAIL)
        .setServiceAccountScopes(FusiontablesScopes.FUSIONTABLES)
        .setServiceAccountPrivateKeyFromP12File(new File("key.p12"))
        // .setServiceAccountUser("user@example.com")
        .build();


    // set up global FusionTables instance
    fusiontables = new Fusiontables.Builder(HTTP_TRANSPORT, JSON_FACTORY, credential).setApplicationName(APPLICATION_NAME).build();

これは元の例のアプローチとは異なりますが、私にとってはうまくいき、テーブルを一覧表示し、新しいテーブルを作成し、データを入力して削除することができました。

Oauth および Fusion テーブルのドキュメント ページで例をもっと簡単に見つけられるといいのですが、これで貴重な時間を節約できます :)

于 2013-05-08T13:07:42.500 に答える