我正在尝试访问API以获取有关http://github.com的信息。我在github中为这个URL创建了应用程序(在开发者应用程序中),并尝试使用httr库通过R进行访问。以下是代码
library(httr)
oauth_endpoints("github")
myapp <- oauth_app("github",key = "#####################",secret = "########################" )(密钥替换为客户端id,secret替换为secred id)
github_token <- oauth2.0_token(oauth_endpoints("github"), myapp)这让我想到了以下几点
使用本地文件缓存R会话之间的OAuth访问凭据? 1:是2:否
我选择了2(正如我之前尝试的选项1),然后会显示以下内容
httpuv not installed, defaulting to out-of-band authentication
Please point your browser to the following url:
https://github.com/login/oauth/authorize?client_id=72939e1b6d499f4f1894&scope=&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&response_type=code输入授权码谁能告诉我授权码是什么?
发布于 2015-06-13 22:30:26
授权码是github在正确的OAuth 2.0“舞蹈”(使用Hadley Wickham的术语)之后提供的代码。最简单的方法是使用httpuv (install.packages("httpuv"))。安装了github后,在1410端口上设置了一个本地you服务器,前提是您已经适当地设置了github应用程序(重定向到http://localhost:1410)。
如果你没有安装httpuv,那么httr的OAuth 2.0功能默认为带外授权。这会要求GitHub重定向到urn:ietf:wg:oauth:2.0:oob&response_type=cod,它应该在浏览器中显示授权码,以便可以复制和粘贴它。然而,几乎可以肯定的是,您的重定向URL设置不同,因此github抱怨存在重定向URI不匹配。我不确定是否可以将github配置为允许oob重定向(但我刚刚尝试过,但似乎没有)。
不使用httpuv的唯一原因是,如果您在不允许在端口1410上设置服务器的机器上使用R,或者如果您正在通过server或RStudio会话在远程机器上使用R。在后一种情况下,将在远程计算机上设置the服务器,但您的浏览器将尝试连接到本地计算机上的端口1410。您可以通过将SSH端口从本地计算机上的端口1410转发到远程计算机上的端口1410来解决此问题。
还要注意,与oauth2-github演示的当前CRAN版本不同,https://github.com/hadley/httr/blob/master/demo/oauth2-github.r上的演示代码包含了Hadley的应用程序的秘密,因此您可以按原样运行演示,而无需首先设置自己的应用程序。
发布于 2015-09-19 10:17:04
以下是对我有效的方法:
从https://github.com/rstudio/httpuv安装HTTPUV包
还可以为当前用户设置运行devtools::install_github(“rstudio/ \\R\library”)`的httpuv权限
https://stackoverflow.com/questions/30819293
复制相似问题