我需要通过API访问一些信息。我需要在R上执行此操作。我尝试在Python上执行此操作,效果很好,但在R上执行相同操作时却遇到401错误。
我有API密钥,也知道要执行的查询。我在下面附加了Python和R代码。
Python:
import requests
headers = {
'Content-Type': 'application/json',
'Authorization': 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX',
}
query = """
{
boards (ids: 157244624) {
permissions
}
}
"""
response = requests.get('https://XYZwebsite.com/', headers=headers, json={'query': query})
R:
require(httr)
headers = c(
`Content-Type` = 'application/json',
`Authorization` = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'
)
data = '{
boards (ids: 157244624) {
permissions
}
}'
res <- GET(url = 'https://XYZwebsite.com/', add_headers(.headers=headers), body = data)
我是否错过了R代码中的某些内容?看起来几乎一样,但是出于某些奇怪的原因,我在R上遇到了401错误。
答案 0 :(得分:0)
也许尝试:
r <- GET("https://XYZwebsite.com/",
add_headers(`Content-Type` = "application/json",
`Authorization` = "XXXXXXXXXXXXXXXXXXXXXXXXXXXX"),
body = data)
编辑: 使用gist,您可以工作:
先认证:
token <- GQL(auth_query)$authenticate$jwtToken
然后,您可以通过传递在响应中获得的令牌来运行查询:
GQL(current_person_query, .token = token)
似乎您正在尝试同时做两件事。
如果您已经拥有令牌,那么您似乎不正确地传递了令牌:
auth_header <- paste("bearer", .token)
res <- POST(.url, body = pbody, encode="json", add_headers(Authorization=auth_header), ...)
应作为“承载者XXXXXXXXXXXXXXXXX”传递。