Я пытаюсь использовать собственное приложение java для загрузки видео на свою учетную запись youtube через устройство с ограниченным доступом, такое как Raspberry pi, работающее как сервер.Аутентификация Google Oauth 2.0 для ограниченного устройства ввода не работает
Для этого я использую Google Oauth 2.0 for limited input device в качестве ссылки.
Здесь я столкнулся следующая проблема:
После получения кода устройства с помощью следующих подобного вызова (шаг 2 из ссылки):
POST /o/oauth2/device/code HTTP/1.1 Host: accounts.google.com Content-Type: application/x-www-form-urlencoded client_id=1084945748469-eg34imk572gdhu83gj5p0an9fut6urp5.apps.googleusercontent.com& scope=https://www.googleapis.com/auth/youtube
Google OAuth сервера отвечает «user_code» и «verify_url» (шаг 3 из ссылки):
{ "device_code": "4/L9fTtLrhY96442SEuf1Rl3KLFg3y", "user_code": "a9xfwk9c", "VERIFICATION_URL": "http://www.google.com/device",
"expires_in": "1800", "интервал": 5}Теперь я предоставляю требуемое разрешение, открывая URL-адрес, на который отвечает сервер google.
Наконец я пытаюсь получить маркер доступа с сервера Google (шаг 4 из ссылки), разместив аналогичный запрос:
POST /o/oauth2/token HTTP/1.1 Host: accounts.google.com Content-Type: application/x-www-form-urlencoded client_id=1084945748469-eg34imk572gdhu83gj5p0an9fut6urp5.apps.googleusercontent.com& client_secret=hDBmMRhz7eJRsM9Z2q1oFBSem& code=4/YMSlR3fSCC1NtUh073DuZKTJJ3ss& grant_type=http://oauth.net/grant_type/device/1.0
но вместо того, получение " access_token 'в качестве ответа Я получаю следующее:
Status Code:400 Response: { "error" : "invalid_request", "error_description" : "Required parameter is missing: grant_type" }
Примечание: С кодировкой url или без нее моя проблема остается неизменной.
Может кто-нибудь, пожалуйста, помогите мне в том, является ли ошибка Google Oauth 2.0 api ошибкой или мой запрос неисправен?
*************************************** ОБНОВЛЕНИЕ **** *********************************
Я пробовал те же шаги с помощью некоторых альтернативных инструментов вместо своих пользовательское приложение Java, поэтому я попытался Fiddler и curl, удивление выглядит следующим образом:
Все вызовы работали прямо как уже упоминалось Google Oauth 2.0 for limited input device для завитка.
Такая же проблема наблюдалась с Fiddler, как и с моим пользовательским приложением java.
Я все еще не в состоянии разобраться в различии, но по-прежнему нужна помощь.
************ ОБНОВЛЕНИЕ # 2 **************
Скрипач запрос:
(URL-кодированная , затемняется клиент секрет)
(можно получить OAuth учетные данные (cLIENT_ID и client_secret), следуя this)
POST HTTP/1.1
https://accounts.google.com/o/oauth2/token?client_id=308065994473-ur9dd7003ajs6mvr5s4kqnugr6j8tsf2.apps.googleusercontent.com&client_secret=XXXXXXXXXXXXXXX&code=4%2FWR-qiTquqB0e4-0LCy0-7rZ2kkE2&grant_type=http%3A%2F%2Foauth.net%2Fgrant_type%2Fdevice%2F1.0
Content-Type: application/x-www-form-urlencoded
(не URL ан закодированы, затемняется клиент секрет)
POST HTTP/1.1
https://accounts.google.com/o/oauth2/token?client_id=308065994473-ur9dd7003ajs6mvr5s4kqnugr6j8tsf2.apps.googleusercontent.com&client_secret=XXXXXXXXXXXXXX&code=4/WR-qiTquqB0e4-0LCy0-7rZ2kkE2&grant_type=http://oauth.net/grant_type/device/1.0
проекта код Java доступен в (Maven проекта, проверить тестовый пример для OAuth вызовов):
https://docs.google.com/file/d/0B8ltWBtPF-DVMDZFNHNMZXpCQlk
Пробовал ваше предложение, все тот же вопрос. –
Удалить разрыв строки в почтовых данных, поэтому используйте 'client_id = 1084945748469-eg34imk572gdhu83gj5p0an9fut6urp5.apps.googleusercontent.com & client_secret = hDBmMRhz7eJRsM9Z2q1oFBSem и код = 4/YMSlR3fSCC1NtUh073DuZKTJJ3ss & grant_type = authorization_code & redirect_uri = your_encoded_redirectURI' –
Призывы прекрасно работали точно в соответствии с эталонным документ Google, когда я использовал" curl ', но он не работает, когда я использую скрипач или мое пользовательское приложение java, я обновил вопрос, пожалуйста, посмотрите. –