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

15

问题

在R语言中,包httr提供了CURL的封装程序(请参见软件包文档)。

我对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
1个回答

29

解决方案

在这种特定的使用情况下——与Canvas API一起使用时——需要在请求的头部中提供附加信息。

使用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}"))

还有其他人能解释一下,为什么例子没有起作用吗?


2
注意:选项1中不需要sep =“” - Ott Toomet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接