【问题标题】:How correctly use request header with API data requests?如何正确使用请求标头与 API 数据请求?
【发布时间】:2014-03-26 17:03:58
【问题描述】:

我正在尝试使用 httr 包找到通过 R 连接到 Appannie API 的方法(根本没有 API 连接经验)。 API 需要包含请求标头 来自appannie网站的引用: 注册一个 App Annie 帐户并生成一个 API 密钥。 将此密钥添加到您的请求标头中,如下所示:
授权:不记名''
引用结束

我写的代码是这样的

query <- "http://api.appannie.com/v1/accounts/1000/sales?break_down=application+dat
&start_date=2012-01-01
&end_date=2012-02-01
&currency=USD
&countries=US
&page_index=1"
getdata<-GET(url=query, add_headers("Authorization: bearer 811b..."))

http_status(getdata) 命令显示“客户端错误:(401) 未经授权” 有人可以帮我解决一下,我做错了什么?

【问题讨论】:

  • 你试过“Bearer”(大写B)吗?
  • 我做了,结果一样
  • "API是无状态的,每个请求都需要认证。所有API请求都使用API​​ key bearer认证,并且只接受HTTPS发出的请求。”通过support.appannie.com/entries/23215057-3-Authentication。您的queryhttp 开头。这可能就是问题所在。

标签: r api httr


【解决方案1】:

您没有正确指定标题。 add_headers(...) 需要一个命名列表。

library(httr)    # for GET(...)
library(rjson)   # for fromJSON(...)
query <- "https://api.appannie.com/v1/accounts/1000/sales?break_down=application+dat&start_date=2012-01-01&end_date=2012-02-01&currency=USD&countries=US&page_index=1"
getdata<-GET(url=query, add_headers(Authorization="bearer <your api key>"))
fromJSON(content(getdata,type="text"))
# $code
# [1] 403
# 
# $error
# [1] "Invalid connection account"

从我没有收到 401 错误的意义上说,这“有效”。在我的情况下,帐户 1000 不存在。

关于评论中的 http/https 问题,http 已被贬低,自 2014-04-01 起将不再被接受,因此您不妨开始使用 https。

【讨论】:

  • 我试过这个添加了 https 并替换了正确的帐户 ID,但仍然有 403 错误。我必须成为 appannie 的超级管理员才能执行此操作吗?
  • 在这种情况下,对于分析部分中的下载页面:appannie.com/dashboard/1000/item/396958695/downloads 是“1000” - 帐户?
  • 根据他们的App Sales support page,您必须同时提供 accountID 和 appID,而您似乎没有这样做。如果您不知道如何使用他们的 API,您应该联系 APP Annie 客户支持。上面的解决方案允许您连接到他们的 API。您可以提供正确的查询字符串。
  • 我设法让它工作,不得不从网站上修复这个例子一点点,但它工作。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-30
  • 1970-01-01
  • 2016-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-20
相关资源
最近更新 更多