2014-06-22 2 views
1

Я пытаюсь использовать собственное приложение java для загрузки видео на свою учетную запись youtube через устройство с ограниченным доступом, такое как Raspberry pi, работающее как сервер.Аутентификация Google Oauth 2.0 для ограниченного устройства ввода не работает

Для этого я использую Google Oauth 2.0 for limited input device в качестве ссылки.

Здесь я столкнулся следующая проблема:

  1. После получения кода устройства с помощью следующих подобного вызова (шаг 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 
    
  2. 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}

  3. Теперь я предоставляю требуемое разрешение, открывая URL-адрес, на который отвечает сервер google.

  4. Наконец я пытаюсь получить маркер доступа с сервера 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, удивление выглядит следующим образом:

  1. Все вызовы работали прямо как уже упоминалось Google Oauth 2.0 for limited input device для завитка.

  2. Такая же проблема наблюдалась с 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

ответ

2

Значение неправильно, вам должен использовать grant_type=authorization_code, поскольку this говорит.

+0

Пробовал ваше предложение, все тот же вопрос. –

+1

Удалить разрыв строки в почтовых данных, поэтому используйте 'client_id = 1084945748469-eg34imk572gdhu83gj5p0an9fut6urp5.apps.googleusercontent.com & client_secret = hDBmMRhz7eJRsM9Z2q1oFBSem и код = 4/YMSlR3fSCC1NtUh073DuZKTJJ3ss & grant_type = authorization_code & redirect_uri = your_encoded_redirectURI' –

+0

Призывы прекрасно работали точно в соответствии с эталонным документ Google, когда я использовал" curl ', но он не работает, когда я использую скрипач или мое пользовательское приложение java, я обновил вопрос, пожалуйста, посмотрите. –

Смежные вопросы