Мне нужна помощь, связанная с вставкой API Mirror Credentials из моего кода сервера Python. Мы используем библиотеку API Google Python для вставки специального токена аутентификации в API Mirror, но я получаю пустой результат от mirror.accounts(). Insert(). Execute(), где мне нужно получить хотя бы ошибку или подтверждение того, что учетные данные маркера API, которые мы передаем в Google Mirror API.Как вы вставляете учетные данные Google Glass Mirror из кода на стороне сервера python?
Вот наш код сервера 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
знамение мы получаем передаемся из Google App Gallery, когда мы Обратим стеклянную посуду на (мы уже настроили нашу стеклотару приложение).
Выполнение вышеуказанного кода, мы получаем пустое значение для retValue
, это пустой словарь: {}
при печати. Из документации похоже, что это должно быть сообщение об ошибке или подтверждение.
В ответ на комментарий:
Вот распечатка, что запрос мы посылаем как выглядят (есть, вставив операторы печати в 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'
I получить пустой словарь в качестве ответа: {}
Я вижу, что на самом деле это говорит о службах Googles по двум причинам:
- Если я изменяю user_token как недопустимый, код генерирует исключение.
- Я вижу счетчик вызовов API в консоли разработчика Google, считая эти попытки как призывы к нашей квоте API.
Фактические данные в ответ от сервера 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») с моим приложением, указанным во время процесса проверки, возвращает пустой массив.
Ничто не сразу подскакивает мне, как ошибаться. Есть ли способ, которым вы можете предоставить исходный дамп запроса и ответа от сервера, прежде чем клиентская библиотека выполнит преобразование типа данных Python? –
@TonyAllevato Я печатаю запрос, который мы строим из объекта PIRON Mirror API. Я не знаю, как углубиться в фактический код API. Есть ли примеры Python для проверки подлинности GDK, на которые я могу смотреть и следовать? – MikeN
Я лично предлагаю дополнительную подарочную карту Outback steakhouse за $ 250 для тех, кто может помочь мне исправить эту проблему. – MikeN