0

Google API を使用するには、Google Developers Console からそれらを有効にした後、資格情報を生成する必要があります。私の場合、API サーバー側を使用するバックエンドがあります。この目的のために、Google ページで「サーバー アプリケーションのキー」と呼ばれるものを生成するオプションがあります。ここまでは順調ですね。

問題は、キーを生成するために、ホワイトリストに登録されるサーバーの IP アドレスを指定する必要があることです。しかし、GAE には、そこで使用できる静的 IP アドレスがありません。

次のコマンドを実行して手動でIP を取得するオプションがあります。

dig -t TXT _netblocks.google.com @ns1.google.com 

ただし、リストが静的であるという保証はなく (さらに、時々変更されることが知られています)、Google Developers Console に掘り下げて取得した IP の追加の使用を自動化できるプログラム的な方法はありません。

これにより、2つの選択肢が残ります。

  1. このプロジェクトの GAE は忘れてください。皮肉なことに、GAE を Google API のバックエンドとして使用することはできません (Amazon やその他のソリューションを使用することをお勧めします)。また
  2. 変更があった場合に通知する dig コマンドの出力に対するウォッチドッグのようなものをプログラムし、ホワイトリストを手動で更新するか (これを行うつもりはありません - 危険すぎます)、またはすべての IP が使用できるようにします。 Google API は、API キーを持っていることを認めました。最も安全なソリューションではありませんが、機能します。

他の回避策はありますか?GAE が Google API のサーバー側の使用をサポートしていない可能性はありますか?

4

2 に答える 2

1

はい、アプリ ID を使用する必要があります。IP を取得したり、GAE をあきらめたりすることは忘れてください :-) たとえば、GAE アプリケーション内で Big Query を使用する方法の例を次に示します。

static {
    // initializes Big Query
    JsonFactory jsonFactory = new JacksonFactory();
    HttpTransport httpTransport = new UrlFetchTransport();
    AppIdentityCredential credential = new AppIdentityCredential(Arrays.asList(Constants.BIGQUERY_SCOPE));
    bigquery = new Bigquery.Builder(httpTransport, jsonFactory, credential)
            .setApplicationName(Constants.APPLICATION_NAME).setHttpRequestInitializer(credential)
            .setBigqueryRequestInitializer(new BigqueryRequestInitializer(Constants.API_KEY)).build();
}
于 2014-06-29T20:08:53.257 に答える