не может получить токен доступа для oauth2 - PullRequest
0 голосов
/ 15 мая 2018

Я пытаюсь получить токен доступа Oauth2 для использования adwords api. Я использую google-api-ads-ruby и пытаюсь следовать приведенной здесь инструкции: https://github.com/googleads/google-api-ads-ruby/wiki/API-access-using-own-credentials-(installed-application-flow). У меня есть токен разработчика, идентификатор клиента, секрет и любая другая информация, вставленная в adwords_api.yml. И когда я запускаю setup_oauth2.rb, он отображается так:

Hit Auth error, please navigate to URL:
https://accounts.google.com/o/oauth2/auth?access_type=offline&client_id=309181******-lnbictq23g17o7pp3e6v7vdqq9juinv9.apps.googleusercontent.com&redirect_uri=urn:ietf:wg:oauth:2.0:oob&response_type=code&scope=https://www.googleapis.com/auth/adwords
log in and type the verification code: 

так, как сказано в документе, я скопировал и вставил URL в браузер, но продолжаю получать это:

enter image description here

Я также попытался создать новый идентификатор клиента, выбрав «другое» вместо «веб-приложение». Хотя многие в Интернете говорят, что выбирают «установленное приложение», такой возможности не существует. Все варианты, которые я вижу, только это:

enter image description here

Я не знаю, сколько дней я застрял на этом. Пожалуйста, дайте любой совет, если у вас есть. спасибо.

1 Ответ

0 голосов
/ 15 мая 2018

Oauth2 работает так, что ему нужно знать, куда возвращать аутентификацию. Это делается путем определения URI перенаправления.

С браузерными приложениями легко узнать, куда должна быть возвращена аутентификация. В этом случае следует перейти на страницу веб-сайта, предназначенную для обработки ответа от сервера аутентификации.

С установленными приложениями это немного сложнее, потому что нет веб-сайта, на который можно вернуться, поэтому нет способа узнать точный IP-адрес, куда его отправить. В этом случае Google создает два стандартных URI перенаправления, которые вы можете использовать.

urn: ietf: wg: oauth: 2.0: oob и http://localhost

Объяснение вашей ошибки

В вашем случае, если вы читаете сообщение об ошибке, вы отправляете URI перенаправления Native на идентификатор клиента браузера.

Ваша проблема:

309181******-lnbictq23g17o7pp3e6v7vdqq9juinv9.apps.googleusercontent.com  <--- Web client id  
urn:ietf:wg:oauth:2.0:oob  <--- Redirect uri only allowed for native clients

Решение

Вернитесь в консоль разработчика Google и найдите идентификатор клиента и секрет клиента для собственного (другого) клиента, которого вы создали. Вы не можете использовать urn:ietf:wg:oauth:2.0:oob с идентификатором клиента браузера, как вы это сделали сейчас.

Теперь это действительно зависит от того, что вы здесь делаете. Если вы собираетесь опубликовать это на каком-либо веб-сайте, то оставление этого в качестве клиента браузера, вероятно, будет решающим идентификатором. в этом случае использование http://localhost для вашего URI перенаправления решит вашу проблему. Но вы должны добавить новый URI перенаправления, когда вы выпустите его на свой рабочий сайт. Оставлять localhost разрешенным в производственном клиенте, на мой взгляд, плохая идея.

но это действительно зависит от того, как вы собираетесь использовать это приложение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...