r - 在R的httr包中使用oauth2.0 token

标签 r curl oauth oauth-2.0 httr

问题
软件包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}"))
#其他说明
  • Authorization Header的说明
  • 为什么"Bearer "必须在 key 之前输入的理由。
  • OAuth Bible对于理解请求
  • 的组件很有用

    其他人能否解释一下OP的示例不起作用的其他原因?

    关于r - 在R的httr包中使用oauth2.0 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44959476/

    相关文章:

    r - 在数据框 R/组合学中寻找可行的组合

    docker - 如何在Docker第3部分教程中使用curl -4 http://localhost?

    Facebook Chatbot Persistent Menu 不起作用(需要参数 setting_type)

    asp.net-mvc - 用于移动应用程序的 REST API 上的 OAuth

    php - 使用 PHP 访问 Picasa Web API

    python - 如何列出 Google Big Query 中所有数据集中所有表的大小

    r - 从经纬度 R 转换为本地时区

    php - 如何让 PHP 正确地对数字索引数组进行 URL 编码?

    node.js - 错误或规范更改(Twitter API 1.1 的)

    r - 循环数据框并考虑值的类型