在 R 中使用 httr 建立具有 StackOverflow.com 的隐式 Oauth2 流

Using httr in R to establish an implicit Oauth2 flow with StackOverflow.com

提问人:Hack-R 提问时间:6/16/2018 更新时间:6/16/2018 访问量:266

问:

我正在尝试通过 StackExchange API 为我在 R 中连接到 StackOverflow 的测试建立“隐式”Oauth2 授权流。

我处于这篇相关文章的情况 #3 中,它指定了如何以与语言无关的方式设置和其他值。redirect_uri

我已执行上述步骤,即在 StackApps.com 上设置应用程序以启用隐式身份验证。

我已经使用库复制了 R 中的链接指令,唯一的主要调整是显然在流程中需要客户端密钥,而不是 StackOverflow 实际需要它。httrhttr

library(httr)

# in the StackApps answer stackoverflow.com was used here.
# that just took me to the landing page.

# the docs use this URI and it gets me closer but 
# it just says "Authorizing Application" with a blank page under that
#   and it never completes.
end <- oauth_endpoint(authorize   = "stackoverflow.com/oauth", 
                           access = "stackoverflow.com/oauth")


client_secret = "secret_code_here"

myapp <- oauth_app("myapp",
                   key    = "12665", # not a secret
                   secret = client_secret,
                   redirect_uri="https://stackexchange.com/oauth/login_success")


token <- oauth2.0_token(end,
                        myapp,
                        scope=NULL)
                        #,use_oob=T)

当我运行代码时,浏览器会自动打开并转到 StackOverflow.com。但是,它只是将我带到登录页面,而 Oauth 从未完成。

我尝试了一下,唯一的区别是 R 提示我输入从未提供的授权代码。use_oob=Tenter image description here

r httr 堆栈交换 API

评论

1赞 Brock Adams 6/16/2018
我不知道 R 或 httr 库,但该代码似乎没有针对 SE API 的要求进行设置。它可能应该是初学者,不能为 NULL。实际上是在发送(在HTTP请求中)吗?如果没有,那也是个问题。authorize = "stackoverflow.com/oauth/dialog"scopekeyclient_id
0赞 Hack-R 6/16/2018
@BrockAdams 哦,再次感谢布洛克!!您是 API 的守护神。我不知道不可能是 NULL。幸运的是,它调用的参数实际上映射到 URI 中。我将根据您的评论尝试一些更改,如果这不起作用,我将尝试不同的库。scopekeyclient_id
0赞 Hack-R 6/16/2018
我还注意到其他一些超级奇怪的东西。如果我在没有的情况下尝试它,即使它导致该屏幕并且没有完成,URI 中也有一个授权代码。因此,如果我复制它,然后重新运行它,那么我可以将我在 URI 中找到的先前代码粘贴为授权代码。但这太可怕了。你明白我的意思吧?基本上它永远不会起作用,但我可以通过使用 1 次失败尝试中的信息来修复另一个失败的尝试来“破解”它,哈哈。use_oob=Tuse_oob=T
0赞 Pozmanski 7/9/2018
@Hack-R 您是否有每天 10000 个电话的限制?
0赞 Hack-R 7/9/2018
@Pozmanski 好问题,但不是。我甚至从未真正接到过 1 个成功的电话(或者如果我只打了 1 个电话)。

答: 暂无答案