【发布时间】:2015-08-03 14:45:28
【问题描述】:
我使用以下内容来获得可以从 Android 应用访问后端的身份验证。这在此处进行了描述https://developers.google.com/identity/protocols/CrossClientAuth。
StringBuffer sb = new StringBuffer();
sb.append("oauth2:server:client_id:");
sb.append(getString(R.string.google_app_id));
sb.append(":api_scope:");
sb.append("profile email");
final String scope = sb.toString();
String token = GoogleAuthUtil.getToken(Activity.this, mAuthAccount, scope);
(mAuthAccount 之前是使用 AccountPicker.newChooseAccountIntent 设置的。)
上面返回一个短暂的验证码,有时已经过期。我想对照谷歌服务器检查它,但使用从 GoogleAuthUtil.getToken 返回的令牌字符串调用 https://www.googleapis.com/oauth2/v1/tokeninfo?access_token= 会返回“无效令牌”。
在我尝试使用之前如何验证验证码没有过期?
编辑:返回的字符串不是令牌,而是可以与google API交换以获得令牌的授权码(返回的字符串以“/4”开头,而不是“/1”或“/2”如果我没记错的话)。
代码并不总是有效(在我的服务器上),我希望能够检查代码是否可以使用或已过期。
【问题讨论】:
-
我在调用 GoogleAuthUtil.getToken 后从googleapis.com/oauth2/v1/tokeninfo 得到 {"error":"invalid_token"} - 令牌只是 生成而不是经过调整。可能是token的类型不对?
-
另外,我尝试使令牌无效并再次调用 GoogleAuthUtil.getToken()。我仍然收到来自 googleapis.com 的无效令牌回复。这是我不明白的。我想知道我做错了什么。
-
您的问题解决了吗?你的问题是什么?
标签: android access-token