Я пытаюсь получить токен доступа к стеклу для публикации на временной шкале стекла из приложения для Android. пользователь может выбрать некоторую информацию и отправить ее на свое стеклянное устройство.
String token = GoogleAuthUtil.getToken(activity, mEmail, activity.getString(R.string.glass_token_scope));
где mEmail – адрес электронной почты пользователя Google Glass, а область действия:
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, нельзя использовать с API Glass Mirror. Я вернулся к консоли Google API и увидел, что вы можете создать некоторые идентификаторы клиентов для Android. Поэтому я создал идентификатор клиента для приложения Android, а также настроил простой доступ к API для Android. Для отпечатка SHA1 я использовал SHA1 сертификата отладки.
Кому-нибудь удалось получить токен Glass на Android и успешно выполнить запрос с телефона 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"));
Спасибо!