Как аутентифицировать игрока в Google Games на сервере - PullRequest
1 голос

Документы, еще раз, просто я иду по кругу

В документации для входа в игру предлагается использовать обычную процедуру входа в Google:
https://developers.google.com/games/services/android/signin
который указывает на использование ID token для аутентификации пользователя на стороне сервера: https://developers.google.com/identity/sign-in/android/backend-auth
но, похоже, нет способа получить идентификатор игрока Игры , совпадающий с этим проверяемым токеном идентификатора, что означает, в конце концов, мы не можем установить подлинность игрока Игры, который выполнил вход ,

Я также обнаружил вызов verify , который, по-видимому, предназначен для получения идентификатора игрока из Игр, но он заблокирован за токеном доступа , который будет вызывать дополнительные разрешения при входе в систему. и более сложный обмен между клиентом и сервером, и в целом он нежелателен, поскольку мы не стремимся делать какие-либо звонки Google от имени пользователя.

Странно, что прямого способа проверить подлинность идентификатора Игр в Google нет. Есть ли другая процедура аутентификации для идентификатора игры, которую я просто пропускаю?

1 Ответ

0 голосов
/ 20 мая 2019

Странно, что прямого способа проверить подлинность идентификатора Игр в Google нет.Есть ли другая процедура аутентификации для идентификатора игры, которую я просто пропускаю, может быть?

Есть, и вы упомянули об этом в своем вопросе: используйте токен доступа.

Подцепите этос Google_Service_Games и вы получите тот же идентификатор.(Начинается г; openID только числовой)

        $googleClient = new \Google_Client();
        $googleClient->setClientId(GOOGLE_OAUTH_CLIENT_ID);
        $googleClient->setClientSecret(GOOGLE_OAUTH_CLIENT_SECRET);
        $googleClient->setRedirectUri('postmessage');
        $googleClient->setScopes('googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/games https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email');

        $googleToken = json_encode([
            'access_token' => $accessToken,
            'token_type' => '',
            'expires_in' => 1800,
            'id_token' => '',
            'refresh_token' => $refreshToken,
            'created' => time()
        ]);
        $googleClient->setAccessToken($googleToken);

        $gamesService = new \Google_Service_Games($googleClient);
        $me = $gamesService->players->get('me');
        $me = $me->toSimpleObject();
...