我正在尝试将一个玻璃访问令牌从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!
答案 0 :(得分:1)
要在Android上获得有效的OAuth 2.0令牌,您需要使用Google Play服务API,尤其是GoogleAuthUtil类。
您还需要在APIs Console上注册您的证书;我建议您查看描述这些步骤的Drive SDK Quickstart for Android。