Android : Google 登录无效令牌

Android : Google Sign-in Invalid token

我通过 google 登录收到的令牌出现错误 android:

{ "error": "invalid_token", "error_description": "Invalid Value" }

我还注意到,与我在 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);
        }
}

知道可能发生了什么,或者如何更深入地调试问题吗?

好的,所以我找到了答案,作用域必须这样写:

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