Проблемы с 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)
вы должны увидеть, что аутентификация завершена.