Я пытаюсь использовать свое собственное Java-приложение для загрузки видео в мою учетную запись YouTube через устройство с ограниченным доступом, такое как Raspberry pi, работающее в качестве сервера.
Для этого я использую Google Oauth 2.0 для ограниченного устройства ввода в качестве ссылка.
Здесь я столкнулся со следующей проблемой:
- # P4 #
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
- # P5 #
# P6 #
Теперь я даю необходимое разрешение, открывая 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-адреса или без нее моя проблема остается прежней.
Может ли кто-нибудь помочь мне узнать, не работает ли API Google Oauth 2.0 или мой запрос ошибочен?
************************************** ОБНОВЛЕНИЕ ******* ******************************
Я попробовал те же шаги с некоторыми альтернативными инструментами вместо своего собственного Java-приложения, поэтому я попробовал Fiddler и curl, сюрприз заключается в следующем:
Все вызовы работали правильно, как указано в Google Oauth 2.0 для ограниченного устройства ввода для локона.
С Fiddler наблюдалась такая же проблема, как и с моим пользовательским Java-приложением.
Я все еще не могу понять разницу, мне все еще нужна помощь.
************ ОБНОВЛЕНИЕ № 2 **************
Запрос скрипача:
(URL закодирован, секрет клиента скрыт)
(Можно получить учетные данные oauth (client_id и client_secret), выполнив это)
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):