将 oauth2.0 令牌与 R 的 httr 包一​​起使用

Using oauth2.0 tokens with R's httr package

问题

httr 在 R 中提供了 CURL 包装器(参见 package documentation)。

我是 HTTP 和 API 的新手。我的麻烦是让 oauth2.0 身份验证工作。我尝试了各种语法并得到错误或状态 401。

使用 oauth2.0 令牌并使用 httr 发出 GET() 请求的正确方法是什么?

代码尝试

# 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 中需要额外的信息。

使用 httr R 包中的 GET 函数,使用 add_header 参数提供包含您的 oauth2 密钥的参数。

如果您不想将密钥硬编码到请求中,请使用选项 1(推荐)。或者,使用选项 2 并将密钥作为字符串插入。但是在这两种情况下,“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}"))

#进一步说明

  • Authorization Header
  • 的解释
  • "Bearer " 必须位于密钥之前的原因。
  • OAuth Bible 对于理解请求的组成部分很有用

还有谁能解释 OP 的示例没有的其他原因吗?