我需要一些帮助来完成从我的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()
注意:$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”)与我在评论过程中提供的应用程序一起返回一个空数组。
答案 0 :(得分:1)
Insert Mirror API文档有点不正确。它返回一个空响应,状态标题代码为204(http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html)" No Content"什么时候成功。文档的某些部分让我相信它会回复响应中的凭据,但事实并非如此。
另外,我可以通过首先确保我可以从我的Glass设备上的https://google.com/myglass商店安装我的临时Glassware来调试为什么我无法在Glass上加载凭据的原因这确保了连接性。