IDトークンをバックエンドに送信するためのthese instructions(https://developers.google.com/identity/sign-in/android/backend-auth)ですが、String scopes = "audience:server:client_id:" + Service.SERVER_CLIENT_ID;
を設定すると(SERVER_CLIENT_ID
はAndroidクライアントIDではありません)このエラーをスローします。バックエンドサーバーを使用したGoogle認証が必要スコープ
E/Login: com.google.android.gms.auth.GoogleAuthException: Unknown
私が代わりに String scopes = "oauth2:profile email";
次のスコープを使用する場合しかし、私は正常に「」トークンを取得しますが、それは限り、私はそれがあることを期待通りではないと私はそれが間違っているかもしれない怖いです。
私の質問は
1)なぜscopes = "audience:server:client_id:" + SERVER_CLIENT_ID;
は、ガイドの仕事で使用していません...ですか?
2)私が得たトークンは、String scopes = "oauth2:profile email";
を使って、バックエンドでユーザーを確認するための安全なものですか?
コードは次のとおりです。
@Override
protected String doInBackground(Void... params) {
String accountName = Plus.AccountApi.getAccountName(googleApiClient);
Account account = new Account(accountName, GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE);
//String scopes = "oauth2:profile email";
String scopes = "audience:server:client_id:" + Service.SERVER_CLIENT_ID; // Not the app's client ID.
Log.d(TAG, "Account Name: " + accountName);
Log.d(TAG, "Scopes: " + scopes);
try {
userIdToken = GoogleAuthUtil.getToken(getApplicationContext(), account, scopes);
return userIdToken;
} catch (IOException e) {
Log.e(TAG, "IOError retrieving ID token.", e);
return null;
} catch (UserRecoverableAuthException e) {
startActivityForResult(e.getIntent(), RC_SIGN_IN);
return null;
} catch (GoogleAuthException e) {
Log.e(TAG, "GoogleAuthError retrieving ID token.", e);
return null;
}
}
オフ第一。 Stackoverflowへようこそ。それが正しい方向に私を指しているかどうかを確認するために秒を与えてください。 (私はその間にこれを投票しています) – SARose
ありがとう!私はそれが完全な答えではないことを知っていますが、私はコメントを残すことができず、私はいくつかの情報が誰よりも良かったと思いました。 – kmosdev
サンプルコードを投稿してもらえますか – SARose