在我的代码中,我可以像这样获取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"
}
任何想法我做错了什么? 我需要解码吗?如果是这样的话?
答案 0 :(得分:0)
76个字符表示它是一个Base64键,这就是你将它解码为字节数组的方式(如here所示):
byte[] data = Base64.decode(base64, Base64.DEFAULT);
String text = new String(data, "UTF-8");