StackExchange API:无法解析client_id

StackExchange API: Could not parse client_id

提问人:Hack-R 提问时间:6/15/2018 最后编辑:Hack-R 更新时间:11/9/2018 访问量:462

问:

我正在尝试连接到 R 中的 StackExchange API。

当我尝试时:

library(httr)
end <- oauth_endpoint(authorize   = "https://stackoverflow.com/oauth",
                           access = "https://stackoverflow.com/oauth")

myapp <- oauth_app("myapp",
                   key    = "KEY",           # tried swapping these
                   secret = "CLIENT SECRET",
                   redirect_uri = "https://stackoverflow.com/oauth/login_success")

token <- oauth2.0_token(end,
                        myapp)

浏览器打开,但显示以下消息(在浏览器中):

Couldn't parse `client_id`

如果我尝试使用相反(反向)的 和 值,或者将事件设置为任一值和(只是为了在没有特权访问的情况下进行测试),也会发生这种情况。keysecretkeysecret=NULL

StackExchange API 文档说,它们给你的价值并不是真正的秘密,但价值是。在帮助中,它说“不等同于密码,也不是真正的秘密”。有趣。keyclient_secretoauth_appsecret

现在,我只是尝试建立初始测试连接。

更新:我很好奇这是否真的是无法解析特殊字符的问题。我尝试转义我的密钥和client_secret中的 2 个括号 ()。这并没有改变任何事情。然后我尝试将两者都设置为空字符串(即等),但这不知何故导致了相同的结果。我觉得这是一个线索,但我仍然不知道出了什么问题。((key = ""

R OAuth-2.0 堆栈交换 API

评论


答:

2赞 Brock Adams 6/15/2018 #1

您使用的是隐式(“客户端”)OAuth(SE API 文档)。

这意味着身份验证序列应如以下示例所示:

  1. 您的应用 HTTP GETS:

    https://stackexchange.com/oauth/dialog?client_id=4709&scope=private_info&redirect_uri=https://stackexchange.com/oauth/login_success
    

    地点和设置根据您的情况。client_idscope

  2. 然后,您的应用将重定向到:

    https://stackexchange.com/oauth/login_success#access_token=wdR8Lm7m4ibD48lfrCcFxQ))&expires=86399
    

    例如。

    Where 是需要身份验证的后续调用所需的内容。access_token

我不是 r 编码员,但猜语法应该是这样的:

myapp <- oauth_app("myapp",
    client_id   = "{Your App's ID}",
    scope       = "private_info",  #  Or whatever is desired. See the doc page linked above
    redirect_uri = "https://stackoverflow.com/oauth/login_success")
  • client_secret仅用于服务器端(显式)OAuth。
  • 出于配额目的,传入所有后续调用(无论是否需要 OAuth)。key
0赞 Amar Dev 11/9/2018 #2

我收到同样的错误,我的问题是我使用客户端密钥作为client_id参数的值