问题
软件包httr
在R中提供了CURL包装器(请参阅package documentation)。
我是HTTP和API的新手。我的麻烦是让oauth2.0身份验证起作用。我尝试了各种语法,并得到错误或状态401。
使用oauth2.0 token 并使用GET()
发出httr
请求的正确方法是什么?
代码尝试
# Set UP
url = "https://canvas.{institution}.edu/api/v1/courses"
key = "{secret_key}"
# 1
GET(url, sign_oauth2.0(key))
# Error: Deprecated: supply token object to config directly
# 2
GET(url, config(sign_oauth2.0 = key))
# unknown option: sign_oauth2.0
# 3
GET(url, config = list(sign_oauth2.0 = key))
# Status 401
最佳答案
解决方案
在这个特殊的用例中(与Canvas API一起使用),在请求的 header 中需要其他信息。
使用GET
R包中的httr
函数,使用add_header
参数提供包含oauth2键的参数。
如果您不想将 key 硬编码到请求中,请使用选项1(推荐)。或者,使用选项2并将 key 作为字符串插入。但是在两种情况下,“Bearer”都在键之前。
# Set Up
url = "https://canvas.{institution}.edu/api/v1/courses"
key = "{secret_key}"
# OPTION 1
GET(url, add_headers(Authorization = paste("Bearer", key, sep = " ")))
# OPTION 2
courses.request = GET(url, add_headers(Authorization = "Bearer {secret_key}"))
#其他说明其他人能否解释一下OP的示例不起作用的其他原因?
关于r - 在R的httr包中使用oauth2.0 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44959476/