httr github-API 回调 URL 问题

Posted

技术标签:

【中文标题】httr github-API 回调 URL 问题【英文标题】:httr github-API callback URL issues 【发布时间】:2012-11-01 00:20:24 【问题描述】:

我现在也在使用httr v0.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

【问题讨论】:

【参考方案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) 命令获取它。

【讨论】:

非常好。我还必须安装和加载 httpuv 包才能使其正常工作,但从错误消息中它运行得非常顺利。 最终的工作脚本是什么?我有同样的问题,这个问题没有发布的解决方案。谢谢。 对我来说,回调 URL 必须设置为“localhost:1410”(不要忘记最后一个反斜杠)。【参考方案2】:

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

【讨论】:

【参考方案3】:

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

祝你好运。

【讨论】:

【参考方案4】:

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

github_token

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

【讨论】:

以上是关于httr github-API 回调 URL 问题的主要内容,如果未能解决你的问题,请参考以下文章

r中具有多个标头的httr请求

使用 httr GET 时不考虑 If-Modified-Since?

如何使用 R 中的 httr 包使用 Localytics 中的数据提取数据?

从R中的url获取重定向的数量

使用 httr 发布请求

RCurl::getURL 有效,httr::GET 从对端接收数据时失败