繁体   English   中英

在Powershell中对AppAnnie进行带有“承载者”身份验证的RESTful API请求

[英]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)

决议案

  1. 结束日期必须比开始日期大
  2. 我无法为我的帐户(不是我自己的帐户)中的应用程序检索此类数据

因此所有尝试都会以某种方式徒劳无功

该文档似乎指定“ 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM