3

我正在尝试从 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"));

谢谢!

4

1 回答 1

1

为了在 Android 上获得有效的 OAuth 2.0 令牌,您需要使用 Google Play 服务 API,尤其是GoogleAuthUtil类。

您还需要在API 控制台上注册您的证书;我建议查看描述这些步骤的适用于 Android 的 Drive SDK 快速入门。

于 2013-07-18T17:09:29.300 回答