[英]RESTful API request with “Bearer” authentication for AppAnnie in Powershell
我想通过Powershell通过AppAnnie的API获取数据。
身份验证的描述如下: http : //support.appannie.com/entries/23215057-2-Authentication
我的代码如下:
$apiKey = "someApiKey"
$url = "api.appannie.com/v1.1/apps/ios/app/661947195/ranks?start_date=2014-04-23&end_date=2012-04-23&interval=hourly&countries=US+CN"
$headers = @{"Authorization" = "Bearer " + $apiKey}
$appAnnieResult = Invoke-RestMethod -Uri $url -Headers $headers
$appAnnieResult
结果:
Invoke-RestMethod : Der Remoteserver hat einen Fehler zurückgegeben: (401) Nicht autorisiert.
我想念什么?
尝试在URL前面使用和不使用http://,https://
要尝试,您需要一个来自AppAnnie的APIKey(为此您需要一个免费帐户)
谢谢!
桑德罗
更新:使用建议的https前缀和大量日志记录,我将其作为标题信息
Transfer-Encoding=chunked
Connection=keep-alive
Keep-Alive=timeout=10
Vary=Accept-Language,Cookie
Content-Language=en
Content-Type=application/json
Date=Thu, 24 Apr 2014 16:03:06 GMT
Set-Cookie=sessionId="someLongSessionId";
Path=/
Server=nginx
sessionId="theSameLongSessionId"=
现在的响应类型为
"StatusCode": 400,
"StatusDescription": "BAD REQUEST"
而且我认为“错误请求”会比“未授权”更糟糕。 但是看起来授权不再是问题(似乎是一个会话),但是我的请求一定有问题,对吗? 在给定的示例中,我仅更改了appId和日期(检查了日期中日期和月份的正确位置)
更新2:尝试使用不同的参数,并在行尾添加注释作为响应
$url = "https://api.appannie.com/v1.1/apps/ios/app/848160327/ranks?start_date=2014-04-23&end_date=2012-04-24" #400, bad request
$url = "https://api.appannie.com/v1.1/apps/ios/app/848160327/ranks?countries=US+CN" #403, forbidden
$url = "https://api.appannie.com/v1.1/apps/ios/app/848160327/ranks?interval=hourly" #403, forbidden
$url = "https://api.appannie.com/v1.1/apps/ios/app/848160327/ranks?countries=US+CN&interval=hourly" #403, forbidden
$url = "https://api.appannie.com/v1.1/apps/ios/app/848160327/ranks?start_date=2014-04-23&end_date=2012-04-24&interval=hourly" #400, bad request
$url = "https://api.appannie.com/v1.1/apps/ios/app/848160327/ranks?start_date=2014-04-23&end_date=2012-04-24&countries=US+CN" #400, bad request
我认为响应是预期的文档,因为start_date和end_date是唯一必需的参数。 只要他们进入,这是一个错误的请求(400),否则就成为禁止的请求(403)
决议案
因此所有尝试都会以某种方式徒劳无功
该文档似乎指定“ bearer”为小写。 如果不大写该单词,是否会遇到相同的错误?
同样,您可能需要对标头进行编码,例如:
$headers = @{"Authorization"="bearer "+
[System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($apiKey))}
转储响应异常详细信息和标头的代码:
try{
$appAnnieResult = Invoke-RestMethod -Uri $url -Headers $headers
} catch {
write-host (Convertto-Json $_.Exception.Response)
$headers = $_.Exception.Response.Headers
$cookies = $_.Exception.Response.Cookies
$headers |% { write-host "$_=$($headers[$_])"}
$cookies |% { write-host "$_=$($cookies[$_])"}
}
而且您肯定要在uri中保留https://。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.