我正在尝试从 android 应用程序中获取玻璃访问令牌以发布到玻璃时间轴。用户可以选择一些信息并将其发送到他的眼镜设备。
String token = GoogleAuthUtil.getToken(activity, mEmail, activity.getString(R.string.glass_token_scope));
其中 mEmail 是 google glass 用户的 Google 帐户电子邮件,范围是:
oauth2:https://www.googleapis.com/auth/glass.timeline https://www.googleapis.com/auth/glass.location https://www.googleapis.com/auth/userinfo.profile
(oauth2: ...)
我正在使用 Google AuthUtil,它也确实返回了一个访问令牌。但是当我使用访问令牌时,API 以 401 Unauthorized 响应:
D/demo (10804): Response Code: 401
D/demo (10804): {
D/demo (10804): "error": {
D/demo (10804): "errors": [
D/demo (10804): {
D/demo (10804): "domain": "global",
D/demo (10804): "reason": "authError",
D/demo (10804): "message": "Invalid Credentials",
D/demo (10804): "locationType": "header",
D/demo (10804): "location": "Authorization"
D/demo (10804): }
D/demo (10804): ],
D/demo (10804): "code": 401,
D/demo (10804): "message": "Invalid Credentials"
D/demo (10804): }
D/demo (10804): }
我还成功地设置了服务器端 Oauth2 流程,并且使用生成的访问令牌,我可以从一个小本地脚本成功创建时间线帖子。
从 Android Authutil 返回的访问令牌似乎不能与 Glass Mirror API 一起使用。我查看了 Google API 控制台,发现您可以创建一些特定于 Android 的客户端 ID。所以我为一个安卓应用程序创建了一个客户端 ID,并为 android 设置了简单的 API 访问。对于 SHA1 指纹,我使用了调试证书的 SHA1。
有没有人成功地在 Android 上获得了 Glass 令牌,并且已经成功地使用该令牌从 android 手机发出请求?
对于我使用普通 HttpURLConnection 的实际请求 - 这可能是问题吗?
HttpURLConnection con = (HttpURLConnection)new URL(URI_TIMELINE).openConnection();
con.setRequestMethod("POST");
con.setDoOutput(true);
con.setRequestProperty("Authorization", "Bearer " + token);
con.setRequestProperty("Content-Type", "application/json");
con.getOutputStream().write(content.toString().getBytes("UTF-8"));
谢谢!