私は、GoogleクラウドエンドポイントがAndroidアプリとPythonアプリエンジンで書かれたバックエンドで動作するようになりました。開発中にアプリをアンインストールして再インストールすると、バックエンドから 401 エラーが発生し始めました。これは、初めて動作させた後、バックエンドに変更はありません。そう、
C:\Users\username\.android の debug.keystore ファイルと、同じディレクトリ内の他のファイルをクリーンアップしました。debug.keystore ファイルを再度生成し、新しい sha1 フットプリントを取得しました
Google Apps コンソールで API プロジェクトを削除し、新しい sha1 フットプリントで Web client_id と android client_id を再生成しました
サーバー側コードで新しい Web client_id と android client_id を使用
また、Android コードのオーディエンス スコープで Android cliend_id を更新しました
今アプリをインストールした後も、同じ 401 エラーが表示されます。私のアプリエンジンログはこれを示しています、
I 2013-04-07 16:45:27.297 Checking for id_token.
W 2013-04-07 16:45:27.299 id_token verification failed: Invalid token signature: eyJhbGciOiJSUzI1NiIsImtpZCI6IjMzMTJkNDc0ZWUzNWRjNWU4YzFhMDE4OTkzOGZkN2E3YmUzYmRlZjYifQ.eyJpc3Mi
I 2013-04-07 16:45:27.299 Checking for oauth token.
クラウド エンドポイントの oauth2 エラーとhttp://android-developers.blogspot.com/2013/01/verifying-back-end-calls-from-android.htmlに基づいて、より多くの情報を収集できました。
app_engine サーバーに送信される id_token をデコードしたところ、これらのフィールドがあることがわかりました。
cid = Android app client_id that I registered in app console for
azp = Android app client_id
aud = web client_id for App engine
iss = accounts.google.com
verified_email = true
email_verified = true
email = account i selected in account picker in android app
exp = a datetime having a value in the future
first_segment = {u'alg': u'RS256', u'kid': u'3312d474ee35dc5e8c1a0189938fd7a7be3bdef6'}
上記の値は正しいように見えますが、id_verification は失敗します。理由がわからない。
再び問題が発生しました。アンインストール後にアプリを再インストールすると発生します。Cloudend ポイント サービスが無効なトークン エラーをスローしました。トークンを使用し、URL を使用して検証しました。トークンが有効であることを意味する以下のような出力を取得します。
"issuer": "accounts.google.com",
"issued_to": "172895167251-1prp5r093hf2nro5bei2cmc1tqf4aasdu.apps.googleusercontent.com",
"audience": "172895167251.apps.googleusercontent.com",
"user_id": "myuserid",
"expires_in": 3086,
"issued_at": 1365644284,
"email": "emailIselectedinadroidapp",
"verified_email": true