Using oauth2.0 tokens with R's httr package

…衆ロ難τιáo~ 提交于 2019-12-12 08:48:32

问题


Problem

The package httr provides CURL wrappers in R (see package documentation).

I'm brand new to HTTP and APIs. My trouble is getting oauth2.0 authentication to work. I have tried various syntax specifications and get either errors or status 401.

What is the correct way to use an oauth2.0 token and make a GET() request using httr?

Code Attempts

# 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:


Solution

In this particular use case—working with the Canvas API—additional information is required in the header of the request.

Using the GET function from the httr R package, use the add_header parameter to supply the argument including your oauth2 key.

Use Option 1 if you don't want to hard code your key into the request (recommended). Or, use Option 2 and insert the key as a string. But in both cases, "Bearer " precedes the key.

# 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}"))

Further Explanations

  • Explanation of Authorization Header
  • Rationale for why "Bearer " must go before the key.
  • The OAuth Bible is useful for understanding components of a request

Can anyone else explain other reasons why the OP's examples didn't work?



来源:https://stackoverflow.com/questions/44959476/using-oauth2-0-tokens-with-rs-httr-package

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!