Android : Неверный токен для входа в Google

Я получаю сообщение об ошибке от токена, который я получаю через вход Google в Android:

{ "error": "invalid_token", "error_description": "Недопустимое значение" }

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

ya29.4AFYx2XNZ1sdfdzhWo-of-fSpsDPjgmATx-J82mCjqZJXglwj8VOvedpY_YXJgEVIWe

Я получаю токен следующим образом:

 private class RetrieveTokenTask extends AsyncTask<String, Void, String> {

        @Override
        protected String doInBackground(String... params) {
            String accountName = params[0];
            String scopes = "oauth2:profile email";
            String token = null;
            try {
                token = GoogleAuthUtil.getToken(getActivity().getApplicationContext(), accountName, scopes);
            } catch (IOException e) {
                Log.e(TAG, e.getMessage());
            } catch (UserRecoverableAuthException e) {
                //startActivityForResult(e.getIntent(), REQ_SIGN_IN_REQUIRED);
            } catch (GoogleAuthException e) {
                Log.e(TAG, e.getMessage());
            }
            return token;
        }

        @Override
        protected void onPostExecute(String token) {
            super.onPostExecute(token);
            Log.i("Token Value: ", token);
        }
}

Любая идея, что может происходить, или как отладить более глубокую проблему?


person Kali Aney    schedule 01.09.2015    source источник
comment
Вы отправляете тот же объем на iOS?   -  person Darwind    schedule 01.09.2015
comment
Как вы получаете авторизацию от пользователя в вашем случае? То, как мы это делаем, заключается в том, что мы сначала запрашиваем у пользователя разрешения, а затем получаем AccessToken так же, как и вы, за исключением того, что я использую Plus.AccountApi.getAccountName(), который принимает объект GoogleApiClient. См. это: developers.google.com/+/mobile/android/sign-in.   -  person Darwind    schedule 01.09.2015
comment
Я не уверен, как именно я получаю авторизацию, я нажимаю кнопку Google +, и она автоматически авторизуется, я получаю свое имя пользователя, адрес электронной почты и этот токен... У вас есть пример кода того, как вы сделай это?   -  person Kali Aney    schedule 01.09.2015
comment
Вы получили seccess на вашем пути? Меня точно интересует, получили ли вы токен обновления и время истечения срока действия? Если да, подскажите, пожалуйста, каким путем, потому что я потратил довольно много времени, чтобы получить его ((   -  person Aleksey Timoshchenko    schedule 10.08.2016


Ответы (1)


Итак, я нашел ответ, области должны быть написаны так:

String scopes = "oauth2:"
                + Scopes.PLUS_LOGIN
                + " "
                + Scopes.PROFILE;

И конечная точка отличается от Android до iOS

'https://www.googleapis.com/oauth2/v1/tokeninfo?id_token='; //for iOS
'https://www.googleapis.com/oauth2/v1/tokeninfo?access_token='; //for android
person Kali Aney    schedule 01.09.2015