Android:Google 登录令牌无效

Kal*_*ney 4 android token google-signin

我从通过 google 登录 android 收到的令牌中收到错误消息:

{“错误”:“invalid_token”,“error_description”:“无效值”}

我还注意到,与我在 iOS 中获得的令牌相比,我的令牌看起来有点短:

ya29.4AFYx2XNZ1sdfdzhWo-of-fSpsDPjgmATx-J82mCjqZJXglwj8VOvedpY_YXJgEVIWe
Run Code Online (Sandbox Code Playgroud)

我得到这样的令牌:

 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);
        }
}
Run Code Online (Sandbox Code Playgroud)

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

Kal*_*ney 5

好的,所以我找到了答案,范围必须这样写:

String scopes = "oauth2:"
                + Scopes.PLUS_LOGIN
                + " "
                + Scopes.PROFILE;
Run Code Online (Sandbox Code Playgroud)

并且端点从 android 到 iOS 不同

'https://www.googleapis.com/oauth2/v1/tokeninfo?id_token='; //for iOS
'https://www.googleapis.com/oauth2/v1/tokeninfo?access_token='; //for android
Run Code Online (Sandbox Code Playgroud)