Philips TV Apiv6 Сочетание: HTTP 200 OK ON /PARE /GRANT с Digest Auth, но корпус JSON возвращает «Invalid_pin» (как польAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Philips TV Apiv6 Сочетание: HTTP 200 OK ON /PARE /GRANT с Digest Auth, но корпус JSON возвращает «Invalid_pin» (как поль

Сообщение Anonymous »

Я пытаюсь реализовать процесс спаривания для Android/Linux OS TV (Model 43PUS8309/62, API версия 6) в моем приложении Android (Java/Kotlin с OKTTP). Телевизор использует API, похожий на соединение, в порту 1926 (https). < /P>
Процесс спаривания, как понятно из онлайн-ресурсов и сценария Python (philips_android_tv-master/philips.py), включает в себя эти основные шаги:
  • post to/6/pare/request :
    • Payload: {"Scope": [Read "," write "," управление "]," Device_: "Device_": ",", ",", ",": ",": ",", ":", ":", ":", ",": ",": ",": ",": ",": ",": ",", ":", ":", ":", ",": ":": ",": ",": ",": ",": ",": ",", ":", ":": ",": ",", ":", ":" "...", "app_id": "...", "app_name": "...", "type": "Native", "id": "client_generated_id"}}
    • TV отвечает 200 OK и корпусом JSON, содержащим auth_key и timempame . На экране телевизора появляется PIN -код. Аутентификация: для этого запроса требуется аутентификация HTTP Digest.

      Имя пользователя: client_generated_id от шага 1.
    • Пароль: auth_key Полезная нагрузка: < /strong>
      {
      "auth": {
      "pin": "USER_ENTERED_PIN",
      "auth_timestamp": TIMESTAMP_FROM_STEP_1, // Sent as a number
      "auth_signature": "CALCULATED_HMAC_SIGNATURE",
      "auth_AppId": "1" // Or 1 as number
      },
      "device": { /* Same device object as in /pair/request */ }
      }
      < /code>
      < /li>
      HMAC Signature (auth_signature): рассчитывается как base64.encode (utf8_bytes (hexstring (hmac_sha1 (decoded_secret_key, utf8_bytes (timestamp_string + pin_string)))) . Secret_key является известной фиксированной строкой Base64.
Проблема:
Оба My Android -приложение и сценарий Python. Пара Code:



/timestamp получена.
[*] Первая попытка опубликовать в/6/pare/grant (без авторизации заголовок в моем приложении или обработанной по запросам библиотеки в Python) правильно получает 401 unauthorified tv. Www-authenticate заголовок: digest realm = "xtv", nonce = "some_nonce", qop = "auth" (no opaque Параметр).
[*] как мое приложение, так и сценарий Python, затем правильно рассчитывать Autwortization headse used ewortization и телевизор AUTH_KEY как пароль.
[*] Второй запрос на пост в/6/pare/Grant (с той же полезной нагрузкой JSON, но теперь включает в себя авторизацию: Digest ... Header) получает 200 ok Code. {"error_id": "Invalid_pin", "error_text": "Неверные параметры аутентификации"} как для моего приложения, так и для скрипта Python.

то, что я проверял:

. Работа: Получение 200 OK на Second/Pair/Grant Попытка указывает, что телевизор принимает учетные данные. Скрипт Python с использованием идентичной временной метки , pin и secret_key входы. Конечная строки Base64 auth_signature - идентичные .
[*] Пример Python (timestamp = "2527", pin = "8763"): auth_signature = "ztkwmwe4mtqyndhmmmzdkzdaznwrjmjy1yzfmm2vlzwvim2jlytgyna =="
[*] my java -код с теми же входными данными дает одну и ту же строку Base64. /> Структура полезной нагрузки JSON: < /strong>
  • auth_timestamp отправляется в виде числового значения (долго в Java, int in Python) в JSON.
  • auth_AppId отправляется как числовое 1 .
  • Объект в полезной нагрузке для/pare/Grant использует тот же идентификатор (сгенерированный клиентом), как и в /пейр /рекест. app_id из официальных журналов удаленного приложения Philips TV в моем устройстве json объект для обоих/pair/request и/pare/rant . Это не изменило результат "vallid_pin". Приложение делает. Это также не изменило результат «vangilid_pin» для /пейр/графы/code>.

фрагмент скрипта Python (исправлено и ведение журнала):



Подробнее здесь: https://stackoverflow.com/questions/796 ... h-but-json
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»