Mik*_*keN 6 python google-glass google-mirror-api google-gdk
我需要一些帮助来完成从我的Python服务器代码中插入Mirror Credentials API.我们正在使用Python Google API库在Mirror API中插入一个特殊的身份验证令牌,但是我从mirror.accounts()得到一个空白的结果.insert().execute()我应该至少得到一个错误或确认我们将API令牌凭据传递给Google的Mirror API.
这是我们的Python服务器代码,其中包含一些我们的秘密信息,秘密信息私钥和client_id是在我们安全存储在我们服务器上的秘密.json文件中.
with open(os.path.join(os.path.dirname(__file__), 'mirror-credentials.json')) as f:
credentials_json = json.load(f)
credentials = SignedJwtAssertionCredentials(
service_account_name=credentials_json['client_email'],
private_key=credentials_json['private_key'],
scope='https://www.googleapis.com/auth/glass.thirdpartyauth',
)
http = credentials.authorize(httplib2.Http())
mirror = apiclient.discovery.build('mirror', 'v1', http=http)
glass_request = mirror.accounts().insert(
userToken=$glassware_gallery_user_token,
accountType='com.mycompany',
accountName="testAccountName",
body={
'features': ["a", "b", "c"],
'password': $myapp_glass_auth_token,
'userData': [{"key": "realName", "value": "Rusty Shackleford"}],
'authTokens': [
{"type": "drchrono_glass_token", "authToken": $myapp_glass_auth_token}
],
},
)
retValue = glass_request.execute()
Run Code Online (Sandbox Code Playgroud)
注意:$glassware_gallery_user_token当我们打开Glassware时,我们从Google App Gallery传入的令牌(我们已经设置了我们的玻璃器皿应用程序).
执行上面的代码,我们得到一个空值retValue,它是一个空字典:{}打印时.从文档中看起来应该是错误消息或确认.
回应评论:
下面是我们发送的请求的打印输出(通过将print语句插入到httplib2源代码中来实现):
body='{"userData": [{"value": "Rusty Shackleford", "key": "realName"}], "authTokens": [{"authToken": "$omitted_auth_token", "type": "$myapp_glass_token"}], "password": "$omitted_auth_token", "features": ["a", "b", "c"]}',
headers='{'content-length': '305', 'accept-encoding': 'gzip, deflate', 'accept': 'application/json', 'user-agent': 'google-api-python-client/1.2 (gzip)', 'content-type': 'application/json', 'authorization': 'Bearer ya29.hACi3eQf2L2awk3rrLgf1uZQHen2ZANgT_ObBqTNpqrwC6wa_DwjuO9q'}',
request_uri='/mirror/v1/accounts/$my_google_serviceid/$com.myappname/rustyshack?alt=json'
我得到一个空白字典作为回应: {}
我可以看到这实际上是与Googles服务的对话有两个原因:
来自Google服务器的响应中的实际数据(在httplib2中打印出来的状态代码为204:
'' / '{'fp': , 'status': 204, 'will_close': False, 'chunk_left': 'UNKNOWN', 'length': 0, 'strict': 0, 'reason': 'No Content', 'version': 11, 'debuglevel': 0, 'msg': , 'chunked': 0, '_method': 'POST'}'
@TonyAllevato我正在尝试使用accountManager.getAccounts()获取设备上的所有帐户; 而我只获得一个"com.google"类型的帐户.getAccountsByType("com.xxxxxx")与我在评论过程中提供的应用程序一起返回一个空数组.
插入镜像 API 文档有点不正确。成功时,它会返回一个空响应,状态标头代码为 204 ( http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html )“无内容”。文档的某些部分让我相信它会回显响应中的凭据,但事实并非如此。
另外,我能够调试为什么我无法在我的 Glass 上加载凭据,方法是首先确保我可以在我的 Glass 设备上从https://google.com/myglass商店安装我的临时 Glassware。确保有连接。