从Android应用程序获取和使用谷歌玻璃oauth2访问令牌

时间:2013-07-18 12:43:14

标签: google-mirror-api google-glass

我正在尝试将一个玻璃访问令牌从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。所以我为androdi应用程序创建了一个客户端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"));

THX!

1 个答案:

答案 0 :(得分:1)

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

您还需要在APIs Console上注册您的证书;我建议您查看描述这些步骤的Drive SDK Quickstart for Android