【发布时间】:2013-08-07 13:00:40
【问题描述】:
我已经验证并构建了我的查询,并收到了 403 响应作为禁止访问。
我使用 httr 示例进行了身份验证
# 1. Find OAuth settings for google:
google <- oauth_endpoint(NULL, "auth", "token", base_url = "https://accounts.google.com/o/oauth2")
# 2. Register an application at https://code.google.com/apis/console#access
myapp <- oauth_app("google", "{my app id}.apps.googleusercontent.com", secret = "{my secret}")
# 3. Get OAuth credentials
cred <- oauth2.0_token(google, myapp, scope = "https://www.googleapis.com/auth/yt-analytics.readonly")
在浏览器中授权后,R 控制台会打印“身份验证完成”。
查询是
query <- "https://www.googleapis.com/youtube/analytics/v1/reports?
ids=channel%3D%3D{my channel id}
&start-date=2013-01-01
&end-date=2013-07-31
&metrics=views
&dimensions=day"
授权令牌在标头中传递为
token <- paste("Authorization: Bearer ",cred[[1]], sep="")
我已经尝试了 httr 和 RCurl
的请求# RCurl
api.response <- getURL(query, httpheader = token)
# httr - I think this is the right way to add the token to the header
url_signer <- sign_oauth2.0(cred[[1]], as_header = TRUE)
api.response <- GET(query, config = url_signer)
不幸的是,api.response 的描述性不是很好
{
"error":
{
"errors":
[
{
"domain": "global",
"reason": "forbidden",
"message": "Forbidden"
}
],
"code": 403,
"message": "Forbidden"
}
}
我不知道还有什么地方可以查看并阅读了documentation。
【问题讨论】:
-
如果您收到 404,则说明您没有正确授权。如果您希望任何人提供帮助,您需要提供一个可重现的示例,其中包含指向相应 youtube api 文档的指针。同时使用 RCurl 和 httr 也有点奇怪。
-
我没有看到如何从 httr 获取 GET 函数中的标头,因此使用了 RCurl,但使用 httr 很容易进行身份验证。这是将标题包含在 httr 中的正确方法 - GET(查询,add_headers(授权 = 令牌))吗?它返回相同的 403 Forbidden 错误。感谢您的任何指导或帮助。
-
您可以使用
c(verbose(), url_signer)从 curl 获取详细输出 - 这将有助于确保您发送正确的详细信息。 -
你能解决这个问题吗?我正在经历同样的事情
标签: r youtube-api