使用oauth2.0令牌与R< httr包

时间:2017-07-06 21:52:25

标签: r curl oauth oauth-2.0 httr

问题

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

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

使用GET()使用oauth2.0令牌并发出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

1 个答案:

答案 0 :(得分:9)

解决方案

在此特定用例中使用Canvas API - 请求的标题中需要其他信息。

使用GET R包中的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}"))

进一步说明

其他人可以解释为什么OP的示例没有工作的其他原因吗?