我正在尝试访问API以获取有关http://github.com的信息.我在github(在开发人员应用程序中)的应用程序中为此URL创建并尝试使用httr库访问R.以下是代码
library(httr)
oauth_endpoints("github")
myapp <- oauth_app("github",key = "#####################",secret = "########################" )
Run Code Online (Sandbox Code Playgroud)
(密钥被替换为客户端ID,秘密被替换为secred id)
github_token <- oauth2.0_token(oauth_endpoints("github"), myapp)
Run Code Online (Sandbox Code Playgroud)
这提示我以下内容
使用本地文件在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
Run Code Online (Sandbox Code Playgroud)
输入授权码可以任何人告诉我授权码是什么吗?
授权代码是github在正确的OAuth 2.0"舞蹈"之后提供的代码(使用Hadley Wickham的术语).最简单的方法是使用httpuv(install.packages("httpuv")).安装完成后,在端口1410上设置本地Web服务器,并且您已正确设置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,或者如果您通过RStudio Server或SSH会话在远程计算机上使用R. 在后一种情况下,将在远程计算机上设置Web服务器,但您的浏览器将尝试连接到本地计算机上的端口1410.您可以通过从本地计算机上的端口1410到远程计算机上的端口1410进行SSH端口转发来解决这个问题.
另请注意,https://github.com/hadley/httr/blob/master/demo/oauth2-github.r上的演示代码与oauth2-github演示的当前CRAN版本不同,它包含了Hadley应用程序的秘密,因此您可以按原样运行演示,而不先设置自己的应用程序.
| 归档时间: |
|
| 查看次数: |
8365 次 |
| 最近记录: |