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 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
?
# 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
Bearer Tokens are the predominant type of access token used with OAuth 2.0. A Bearer Token is an opaque string, not intended to have any meaning to clients using it. Some servers will issue tokens that are a short string of hexadecimal characters, while others may use structured tokens such as JSON Web Tokens.
OAuth 2.0 is not backwards compatible with OAuth 1.0 or 1.1, and should be thought of as a completely new protocol. OAuth 1.0 was largely based on two existing proprietary protocols: Flickr's authorization API and Google's AuthSub.
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 {secret_key}"))
#Further Explanations
Can anyone else explain other reasons why the OP's examples didn't work?
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With