0

シンプルな ClientLogin トークンを取得しようとしています。

私のコードは次のようになります:

UrlFetchTransport urlFetchTransport = new UrlFetchTransport();

ClientLoginTokens clientLoginTokens = new ClientLoginTokens.Builder()
    .forApi(ClientLoginTokens.Api.ADWORDS)
    .withHttpTransport(urlFetchTransport)
    .withEmailAndPassword(email, password)
    .build();

String clientLoginToken = clientLoginTokens.requestToken();

コードは、私のローカル マシンと AppEngine の devserver (1.7.7) で問題なく動作します。私は素敵な clientLoginToken で終わります。

ただし、本番環境では、常に 403 Forbidden (または 403 OK という意味) が返され、clientLoginToken (ClientLoginResponseException: 403) を取得できません。私のアプリは現在、http://APP.appspot.comドメイン (デフォルトの AppEngine 運用 URL) で実行されています。

UrlFetchTransport ではなくデフォルトのトランスポートを使用しようとしましたが、これは何も変更しません。ローカルで実行されますが、AppEngine で実行すると失敗します。

ヒントをいただければ幸いです。ありがとう!

4

1 に答える 1

0

これは、Google の ClientLogin のセキュリティ「機能」であることがわかります。

AppEngine のサーバーは世界中に分散されており、Google は誰もあなたのアカウント資格情報を盗んでいないことを確認しています。デフォルト(およびいくつかの未知のメトリック)で、Googleはあなたの「コンピューター」(または私が推測する領域)からではないアカウントへのアクセスをブロックします。

次の場所にアクセスして、アプリケーションを追加できます。

https://accounts.google.com/DisplayUnlockCaptcha

資格情報を入力した後、別のアプリケーションのアクセスを「追加」するのに 10 分かかります。それは私のためにそれを解決しました。しかし、もちろん、そのような問題がない OAuth 2.0 を使用する方がはるかに優れています。

于 2013-04-16T12:34:40.303 に答える