首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Powershell中对AppAnnie使用“承载”身份验证的RESTful应用编程接口请求

Powershell中对AppAnnie使用“承载”身份验证的RESTful应用编程接口请求
EN

Stack Overflow用户
提问于 2014-04-24 02:16:22
回答 2查看 13.8K关注 0票数 3

我想通过他们的应用程序接口通过Powershell从AppAnnie获取数据。

身份验证描述如下:http://support.appannie.com/entries/23215057-2-Authentication

我的代码看起来像这样:

代码语言:javascript
复制
$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

结果是:

代码语言:javascript
复制
Invoke-RestMethod : Der Remoteserver hat einen Fehler zurückgegeben: (401) Nicht autorisiert.

我遗漏了什么?

尝试使用和不使用http://,https://

要试用它,你需要一个来自AppAnnie的APIKey (你需要一个免费的帐户)

谢谢!

桑德罗

更新:使用suggest https前缀和广泛的日志记录,我可以将其作为头信息获取

代码语言:javascript
复制
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"=

现在的响应类型是

代码语言:javascript
复制
"StatusCode":  400,
"StatusDescription":  "BAD REQUEST"

我认为“坏请求”会比“未经授权”更糟糕。但看起来授权不再是问题(似乎有一个会话),但我的请求一定有问题,对吧?在给定的示例中,我只更改了appId和日期(检查日期中的日和月的正确位置)

更新2:尝试使用不同的参数,响应作为行尾的注释

代码语言:javascript
复制
$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)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-21 14:06:38

解决方案

  1. 结束日期需要晚于开始日期
  2. 我无法检索不在我的帐户(不是我自己的帐户)中的应用程序的此类数据

所以所有的尝试在某种程度上都是徒劳的

票数 4
EN

Stack Overflow用户

发布于 2014-04-24 03:56:11

文档中似乎指定"bearer“是小写的。如果你不大写这个词,你会得到同样的错误吗?

此外,看起来您可能需要对头部进行编码,如下所示:

代码语言:javascript
复制
$headers = @{"Authorization"="bearer "+
[System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($apiKey))}

转储响应异常详细信息和头部的代码:

代码语言:javascript
复制
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[$_])"}
}

并且您肯定希望将https://保留在uri中。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23252178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档