Аутентификация Google с внутренним сервером требует областей действия
Я следуюэти инструкции (https://developers.google.com/identity/sign-in/android/backend-auth) для получения идентификационного токена для отправки на мой сервер, но когда я установилString scopes = "audience:server:client_id:" + Service.SERVER_CLIENT_ID;
(ДаSERVER_CLIENT_ID
это не идентификатор клиента Android) Я не могу получить токен и выдает эту ошибку.
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;
}
}