16

我现在也在使用httrv0.2 包来使用 github api。但是我很难通过进入oauth2.0(...)应用程序浏览器页面的部分,单击“允许”,然后重定向到回调 URL 页面。

httr github演示建议使用回调URL,http://localhost:1410但是当我被重定向到该页面时,谷歌浏览器建议它无法连接到该页面并且它被重定向到的页面是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...

这是当我被定向到具有“允许”按钮的页面时,我单击该按钮后我被重定向到无法连接到本地主机的谷歌浏览器页面:1410

4

4 回答 4

13

您应该将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)命令获取它。

于 2014-05-22T14:55:54.943 回答
0

您是通过网络应用程序提供此服务还是扩展程序/插件?重定向 url 必须与您在设置 github 应用程序时指定的回调 url 来自同一主机。请参阅此处了解更多信息。如果您在扩展程序中使用 API,那么我不会有太大帮助。当我遇到你的问题时,这就是我正在寻找的。

于 2013-02-04T22:40:23.667 回答
0

我有同样的错误。但是在我安装 httpuv 包之后它工作正常。安装 httpuv 包后,运行此代码后,

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

您应该能够看到“身份验证完成”。

于 2017-03-23T14:17:27.230 回答
0

我确实遇到了同样的错误和问题,通过根据演示将主页 URL 修改为正确的 URL 来解决问题:http: //github.com 所以最终问题不在回调 URL 中,而是在主页 URL 中,您也可以在 oauth2.0_token() 函数中使用 cache=F 参数。

祝你好运。

于 2015-08-15T17:24:29.550 回答