1

cron ジョブで実行し、新しいテーブルを Google Maps Engine にプッシュするプログラムを作成しようとしています。

しばらく OAuth をいじった後、Google Compute Engine (GCE) VM を認証して、毎回ログインしなくてもセットリスト API にアクセスできることを知りました。これは素晴らしい解決策のように思えたので、いじり始めました。

すべてが適切に設定されていると思いますが、マシンから読み取りまたは書き込み要求を行うことができないため、何か不足しているに違いありません。この呼び出しでマシンをインスタンス化しました:

gcloud compute instances create <INSTANCE_NAME> --scopes https://www.googleapis.com/auth/mapsengine

そして、上記のリンク先のドキュメント ページ (metadata/computeMetadata/v1 ......) で概説されているリクエストを作成して、トークンをリクエストしています。

しかし、Maps Engine API にリクエストを送信すると、(呼び出しの内容によっては) リーダー/ライター アクセス権がないというエラーが表示されます。

VM をインスタンス化するとき、Maps Engine API へのアクセスを含む正しい開発者コンソール プロジェクトをアクティブにして実行しました。

問題は、すべて同じ Google アカウントにあるにもかかわらず、開発者プロジェクトが何らかの形で Maps Engine アカウントを認識していないことにあると思います。これを考える理由は、アクティブな Maps Engine プロジェクトを読み込もうとしたときに結果が返されない (0 のように) ためです。そのリクエストは通過しますが、空の状態で返されます。しかし、特定のマップに関する詳細を要求すると、noReaderAccess エラーが発生します。

助けてくれてありがとう。

EDIT この方法で Maps Engine API を認証することはできませんか? このページの下部にエイリアス スコープのリストがありましたが、残りのスコープ API にはエイリアスがないことがわかりました。これらがサポートされている唯一の API であるというのは本当ですか?

4

2 に答える 2

1

Maps Engine の Google グループでこの質問をしたところ、回答がありました。この問題の解決策は次のとおりです。

https://developers.google.com/maps-engine/documentation/oauth/serviceaccount

ドキュメントは古く、記載されているドロップダウン メニューは必要なものではありません。代わりに、プロジェクト ダッシュボードの設定ボタン (ギア/コグのあるボタン) をクリックします。次に、正しいサービス アカウントのメールを追加していることを確認してください。あなたはすることができます

gcloud compute instances describe INSTANCE_NAME

使用する正しい電子メールを表示します。一番下の「serviceAccounts」の下に表示されます。スコープに含まれる mapsengine API が表示されます。

これがお役に立てば幸いです。

于 2014-08-14T14:11:03.890 に答える