Я получаю токен идентификатора в своем приложении для Android, выполняя следующие действия:

GoogleSignInOptions googleSignInOptions = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestIdToken(getString(R.string.server_client_id))
                .requestEmail()
                .build();

Где server_client_id - идентификатор клиента Oauth моего СЕРВЕРА. Позже я запрашиваю токен с помощью googleAccount.getIdToken()

Затем на моем сервере (PHP), когда я проверяю токен, я проверяю его следующим образом:

$client = new \Google_Client(['client_id' => getenv("GOOGLE_CLIENT_ID")]);
    try {
        $payload = $client->verifyIdToken($this->idToken);
    } catch (\Exception $e){
        throw new BadRequestHttpException($e->getMessage());
    }
    if($payload){
        $this->verifyPayload($payload);
    } else {
        throw new AccessDeniedHttpException("Invalid ID Token");
    }

Где GOOGLE_CLIENT_ID - идентификатор моего клиента Oauth для ANDROID

Я следую этому руководству: https://developers.google.com/ идентичность / вход / Android / запуск интеграции.

На этой странице написано: https://developers.google.com/identity / вход / Android / бэкенд - аутентификация

При настройке входа в Google вызовите метод requestIdToken и передайте ему идентификатор веб-клиента вашего сервера.

Вот почему я использую server_client_id в своем приложении для Android. Это верно?

// Укажите CLIENT_ID приложения, которое обращается к бэкэнду

Вот почему я использую идентификатор клиента ANDROID со своего сервера.

Это правильно? Чтобы использовать Oauth client_id друг друга? Или они оба должны использовать Android CLIENT_ID?

Заранее спасибо

10
Keith 20 Сен 2018 в 03:47

2 ответа

Лучший ответ

ОК, я разобрался. И приложение Android, и веб-сервер должны использовать ключ СЕРВЕРА. Хотя я создал идентификатор клиента для приложения, используя его ключ SHA1 и все остальное.

4
Keith 23 Сен 2018 в 20:23
  1. Отправьте запрос авторизации из приложения, используя client_id и открытый ключ
  2. В ответ вы получите временный токен
  3. Отправьте токен в свой API. Используйте его, чтобы сделать еще один запрос (из API в Google), чтобы получить долгоживущий токен
  4. Храните долгоживущий токен. Используйте его для запроса данных из Google, например. информация о пользователе

Важно: никогда не используйте серверный ключ внутри приложения

1
mate.gwozdz 28 Сен 2018 в 14:14