Проблемы с URL-адресом обратного вызова httr github-API

Я использую пакет httr v0.2, чтобы использовать API github. Но я изо всех сил пытаюсь пройти часть oauth2.0(...), в которой я перехожу на страницу браузера для своего приложения, нажимаю «Разрешить», а затем перенаправляюсь на страницу URL-адреса обратного вызова.

Демонстрация httr github предлагает использовать URL-адрес обратного вызова как http://localhost:1410, но когда меня перенаправляют на эту страницу, Google Chrome предполагает, что он не может подключиться к странице, а страница, на которую он перенаправляется, - http://localhost:1410/?error=redirect_uri_mismatch&state=DZNFcm8tnq... поэтому я попробовал куча других портов и общих URL-адресов не увенчались успехом...

Каким будет другой URL-адрес обратного вызова и URL-адрес, который будет работать?

ниже код, который я использовал

require(httr)
## Loading required package: httr
github.app <- oauth_app("github","xxxxx", "xxxxxxxxxxxxxxx")
github.urls <- oauth_endpoint(NULL, "authorize", "access_token",base_url = "https://github.com/login/oauth")
github.token <- oauth2.0_token(github.urls,github.app)
## Loading required package: Rook
## Loading required package: tools
## Loading required package: brew
## starting httpd help server ... done
## Waiting for authentication in browser...

то есть, когда меня перенаправляют на страницу с кнопкой «Разрешить», которую я нажимаю, после чего меня перенаправляют на страницу в Google Chrome, которая не может подключиться к локальному хосту: 1410


person h.l.m    schedule 01.11.2012    source источник


Ответы (4)


Вам следует обновить пакет httr до последней версии (сейчас это 0.3 - доступна в CRAN). Я нашел соответствующий пример из демоверсии httr (версия 0.3):

library(httr)

# 1. Find OAuth settings for github:
#    http://developer.github.com/v3/oauth/
oauth_endpoints("github")

# 2. Register an application at https://github.com/settings/applications
#    Insert your values below - if secret is omitted, it will look it up in
#    the GITHUB_CONSUMER_SECRET environmental variable.
#
#    Use http://localhost:1410 as the callback url
myapp <- oauth_app("github", "56b637a5baffac62cad9")

# 3. Get OAuth credentials
github_token <- oauth2.0_token(oauth_endpoints("github"), myapp)

# 4. Use API
req <- GET("https://api.github.com/rate_limit", config(token = github_token))
stop_for_status(req)
content(req)

Вы можете получить его с помощью команды demo("oauth2-github", package = "httr", ask = FALSE).

person Artem Klevtsov    schedule 22.05.2014
comment
Очень хорошо. Мне также пришлось установить и загрузить пакет httpuv, чтобы он заработал, но сообщения об ошибках прошли очень гладко. - person Nick Larsen; 11.06.2014
comment
Каким был конечный рабочий сценарий для этого? У меня такая же проблема, и этот вопрос не имеет опубликованного решения. Спасибо. - person Shawn; 02.04.2016
comment
Для меня URL-адрес обратного вызова должен был быть установлен как localhost:1410 (не забудьте последнюю обратную косую черту). - person dmanuge; 02.04.2018

Вы обслуживаете это из веб-приложения или это расширение/плагин? URL-адрес перенаправления должен быть с того же хоста, что и URL-адрес обратного вызова, который вы указали при настройке приложения github. Подробнее см. здесь. Если вы используете API в расширении, я не сильно вам помогу. Это то, что я искал, когда наткнулся на ваш вопрос.

person FajitaNachos    schedule 04.02.2013

У меня была точно такая же ошибка и проблема, и проблема была решена путем изменения URL-адреса домашней страницы на правильный в соответствии с демонстрацией: http://github.com, поэтому в конечном итоге проблема была не в URL-адресе обратного вызова, а в URL-адресе домашней страницы, вы также можете использовать аргумент cache=F в функции oauth2.0_token().

удачи.

person Hytham Elsohl    schedule 15.08.2015

У меня была такая же ошибка. Но после того, как я установил пакет httpuv, он заработал нормально. После установки пакета httpuv после запуска этого кода

github_token ‹- oauth2.0_token(oauth_endpoints("github"), myapp)

вы должны увидеть «аутентификация завершена».

person divyapari    schedule 23.03.2017