Проблемы с URL-адресами httr github-API

Я использую пакет httr v0.2 для использования github api. Но я пытаюсь пройти мимо части 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, которая не может подключиться к localhost: 1410

Ответы

Ответ 1

Вам следует обновить пакет 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).

Ответ 2

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

Ответ 3

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

удачи.

Ответ 4

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

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

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