使用带有R的httr包的oauth2.0令牌

Dan*_*lle 6 curl r oauth oauth-2.0 httr

问题

该包httr在R中提供CURL包装(参见包文档).

我是HTTP和API的新手.我的麻烦是让oauth2.0认证工作.我尝试了各种语法规范,并获得错误或状态401.

使用oauth2.0令牌并使用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
Run Code Online (Sandbox Code Playgroud)

Dan*_*lle 12

在此特定用例中 - 使用Canvas API -请求标头中需要附加信息.

使用R包中的GET函数httr,使用add_header参数提供包含oauth2键的参数.

如果您不想将密钥硬编码到请求中,请使用选项1(推荐).或者,使用选项2并将密钥作为字符串插入.但在这两种情况下,"持票人"都先于钥匙.

# 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 {secretkey}"))
Run Code Online (Sandbox Code Playgroud)

进一步的解释

任何人都可以解释其他原因的OP的例子没有工作?

  • 注意:选项 1 中不需要 `sep = " "`。 (2认同)