2

фона:Должен ли я использовать GoogleAuthUtil.getToken (...) или нет?

мне нужно для проверки подлинности на моем сервере фонового, так что я знаю, что клиент является подлинным. В моей игре Android я подключаюсь к Games.API через GoogleApiClient.

Я только хочу, чтобы войти в один раз, что я хочу сделать это с помощью Games.API, так как это дает мне много преимуществ (Google Play Игра, достижения и т.д.)

я смог получить токен авторизации с помощью GoogleAuthUtil.getToken(...), который я могу сделать после того, как я вхожу в Games.API, что, похоже, дает мне токен. До сих пор хорошо.

Но Google says this is not safe и говорит, что я должен migrate to ID token flow вместо этого. Но, как я понимаю, такой подход потребует мне использовать

Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient); 
startActivityForResult(signInIntent, RC_SIGN_IN); 

, что означает подстрекательство к дополнительный знак в в том, что для Games.API. Кроме того, невозможно addApi и Games.APIиAuth.GOOGLE_SIGN_IN_API к тому же GoogleApiClient!

Итак, перейдите на новейшие сервисы google-play (по крайней мере, r29), используя которые я могу использовать Games.API с Games.getGamesServerAuthCode(...), чтобы получить токен аутентификации для моего сервера. Но у этого есть две проблемы: (1) он требует Android 6.0 или выше, который блокирует 80% рынка, и (2) это устарело!


Вопрос:

Должен ли я использовать GoogleAuthUtil.getToken(...) или нет, и если не то, что мои варианты, учитывая, что я только хочу, чтобы войти используя Games.API?

Подпись Я имею в виду представить пользователю видеоролики. Я не против подписания во что-то еще до тех пор, пока пользователь не должен взаимодействовать со знаком в ...


Примечание:

Первоначально я спросил this question, когда я впервые начал , Текущий вопрос, надеюсь, прояснит ситуацию.

ответ

4

Во-первых, я должен не использование GoogleAuthUtil.getToken(...). Это устарело; конец.

Для достижения того, что я хочу, я нашел следующие работы отлично ... будь то лучший способ, о котором я не знаю.

Во-первых, вход с использованием Auth.GOOGLE_SIGN_IN:

GoogleSignInOptions gso = new GoogleSignInOptions.Builder(
              GoogleSignInOptions.DEFAULT_SIGN_IN) 
    .requestEmail() 
    .requestIdToken("YOUR-SERVER-CLIENT-ID") 
    .build(); 

mGoogleApiClientForSignIn = new GoogleApiClient.Builder(mActivity, this, this) 
    .addApi(Auth.GOOGLE_SIGN_IN_API, gso) 
    .build(); 

mGoogleApiClientForSignIn.connect(); 

В случае успеха это будет в конечном счете называют onConnected(...), где вы можете обсудить второй знак, чтобы Games.API.Это должно быть выполнено отдельно на новом GoogleApiClient, потому что вы не можете смешивать Games.API и Auth.GOOGLE_SIGN_IN: (! Даже между устройствами)

mGoogleApiClientForGames = new GoogleApiClient.Builder(mActivity, this, this) 
    .addApi(Games.API).addScope(Games.SCOPE_GAMES) 
    .addApi(Drive.API).addScope(Drive.SCOPE_APPFOLDER) 
    .build(); 

mGoogleApiClientForGames.connect(); 

В соответствии с новым обновлением Play Games Permissions для 2016 года GoogleSignIn появляется только один раз за игру, после чего пользователю не будут представлены какие-либо визуальные журналы на GoogleSignIn. Единственным визуальным входом будет экран выбора моментального снимка сохраненных игр.

Это работает с Android 2.3 (используйте сервисы google-play r28) и без предупреждений об устаревании. Хузза!

Смежные вопросы