我目前正在尝试使用 OneSignal REST API。我想使用 GET 方法调用查看应用程序操作:
我尝试使用以下命令使用 PowerShell,并使用我自己的 APP_ID:
curl --include \
--header "Authorization: Basic YWUwZDhjNjAtZDQ4ZS00NWI5LWJjMzctYz" \
https://onesignal.com/api/v1/apps
并输出:
未找到接受参数 \ 的位置参数
然后我尝试执行:
curl -X GET -H 'Content-Type: application/json' -H 'Authorization: Basic YWUwZDhjNjAtZDQ4ZS00NWI5LWJjMzctYz' -v -i 'https://onesignal.com/api/v1/apps'
并输出:
无法链接 Headers 参数。无法将值 'Content-Type:application/json' 从“System.String”类型转换为“System.Collections.IDictionary”类型。
然后我尝试使用Postman,如下:
我们的请求翻译成代码如下:
GET /api/v1/apps HTTP/1.1
Host: onesignal.com
Content-Type: application/json
Authorization: Basic YWUwZDhjNjAtZDQ4ZS00NWI5LWJjMzctYz
User-Agent: PostmanRuntime/7.19.0
Accept: */*
Cache-Control: no-cache
Postman-Token: 32a57eb1-1660-4f7b-b141-7fccf83d0851,537878c7-5135-48a8-a04a-1125824785b9
Host: onesignal.com
Accept-Encoding: gzip, deflate
Cookie: __cfduid=ded10b101ef5b9cd648b95b6d2e88f1261572874737
Connection: keep-alive
cache-control: no-cache
然而它回答了我们:400 Bad Request:
{
"errors": [
"Please include a case-sensitive header of Authorization: Basic <YOUR-USER-AUTH-KEY-HERE> with a valid User Auth key."
],
"reference": [
"https://documentation.onesignal.com/docs/accounts-and-keys#section-user-auth-key"
]
}
我已经阅读了回复中给出的 API 文档,并且我确定我正在使用 REST API KEY,因为它是文档中要求的(下面的图片显示了 REST API KEY 的样子)。
最后我尝试了一个网络应用程序,以如下方式发送请求:
生成的 CURL 命令为:
curl -X GET -H'内容类型:application/json'-H'授权:基本YWUwZDhjNjAtZDQ4ZS00NWI5LWJjMzctYz'-v -i'https://onesignal.com/api/v1/apps‘
然而回应依然是:
Error
Error: Bad Request
Response: 400
headers:
{
"cache-control": "no-cache",
"content-type": "application/json; charset=utf-8"
}
body:
{
"errors": [
"Please include a case-sensitive header of Authorization: Basic <YOUR-USER-AUTH-KEY-HERE> with a valid User Auth key."
],
"reference": [
"https://documentation.onesignal.com/docs/accounts-and-keys#section-user-auth-key"
]
我搜索了信息,并阅读了一个 github 线程,其中建议您确认使用的是正确的 REST API KEY。
此外,我之前还读过:
PowerShell 相当于 curl 访问经过身份验证的 Kraken API 的 cURL 示例
我们如何使用 PowerShell 或任何其他命令行工具发送 GET 请求?
我们如何才能创建一个格式良好的请求,如 OneSignal 文档中所示?
答案1
此 API 端点需要您的用户身份验证密钥,而不是您的应用身份验证密钥。原因是此 API 端点用于列出您的所有 OneSignal 应用,而不仅仅是某个特定的应用。
有关如何获取用户身份验证密钥的详细信息,请参阅此处的文档页面:https://documentation.onesignal.com/docs/accounts-and-keys#section-user-auth-key