解码GoogleAuthUtil.getToken(Android)

时间:2015-07-19 19:26:26

标签: java android google-play-services token decode

在我的代码中,我可以像这样获取google + id令牌:

Bundle bundle = new Bundle();
                    bundle.putString(GoogleAuthUtil.KEY_REQUEST_ACTIONS,
                            "http://schemas.google.com/AddActivity http://schemas.google.com/BuyActivity");
                    String token = GoogleAuthUtil.getToken(context,
                          Plus.AccountApi.getAccountName(mGoogleApiClient), scope,bundle);

返回一个76个字符的序列,而我应该收到类似的内容:

{
  'issued_to': 'xxxxxx.apps.googleusercontent.com',
  'user_id': 'yyyyyy',
  'expires_in': 3457,
  'access_type': 'online',
  'audience': 'xxxxxx.apps.googleusercontent.com',
  'scope': 'https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile',
  'email': 'xxxxx@yyyyy.com',
  'verified_email': True
}

同样https://www.googleapis.com/oauth2/v3/tokeninfo?id_token=xyz会返回以下错误消息:

{
 "error_description": "Invalid Value"
}

任何想法我做错了什么? 我需要解码吗?如果是这样的话?

1 个答案:

答案 0 :(得分:0)

76个字符表示它是一个Base64键,这就是你将它解码为字节数组的方式(如here所示):



byte[] data = Base64.decode(base64, Base64.DEFAULT);
String text = new String(data, "UTF-8");