次のようなサービス アカウントを使用して、コマンドラインから Google クラウド エンドポイントにアクセスしようとしています。
https://code.google.com/p/google-api-python-client/source/browse/samples/service_account/tasks.py
例の指示に従って、clientid + pk12 証明書を作成し、それらを使用して oauth2client.client モジュールからの SignedJwtAsertionCredential 呼び出しで資格情報を作成しました。
ローカル devserver で実行されているクラウド エンドポイントを呼び出すと期待どおりに動作しますが、デプロイされた gae クラウド エンドポイントを呼び出すと、
Oauth フレームワーク ユーザーが oauth トークン ユーザーと一致しませんでした。
user_id_token._set_bearer_user_vars() からの oauth.get_client_id(scope) 呼び出しで失敗しているようです。
例外にトレースバックを追加したところ、_maybe_raise_exception から来ているようです
E 2014-01-02 10:30:53.926 発生 NotAllowedError (error_detail) E 2014-01-02 10:30:53.926 NotAllowedError
アプリの認証タイプを変更せずにこのエラーを解決する方法はありますか? ドメインの制限によりリクエストが許可されていないようですか?
私の目標は、ユーザーを関与させずにクラウドエンドポイントを呼び出すことです.SignedJwtAsertionCredential呼び出しを使用して正しいパスであるかどうか、または可能であれば?
追加情報。
エンドポイントの認証タイプが「Google App Domain」に設定されている
エンドポイント メソッドで user_required が True である
SignedJwtAssertCredential から生成されたアクセス トークンは、 https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=ya29を使用すると期待どおりです。
エンドポイントは、API エクスプローラーから期待どおりに機能し、認証フローが関係している場合に機能します。
endpoints_proto_datastore ライブラリの使用。