当我通过请求 body 发送令牌时,Slack 的 apps.connections.open returns "invalid_auth"
Slack's apps.connections.open returns "invalid_auth" when I send the token via request body
我正在尝试从浏览器调用 Slack 的 API,所以我 运行 在 Chrome 的开发控制台中关注,但出现错误:
await (await fetch("https://slack.com/api/apps.connections.open", {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
body: new URLSearchParams({'token': 'xapp-1-MYTOKEN'})
})).json()
→ {ok: false, error: 'invalid_auth'}
我认为通过请求 body 提供令牌应该没问题,因为 documentation 是这样说的:
Tokens should be passed as an HTTP Authorization header or alternatively, as a POST parameter.
我是不是漏掉了什么?
我尝试了等效的(我认为)cURL 命令,结果相同。
$ curl -s --data-urlencode token@TOKEN https://slack.com/api/apps.connections.open | jq
{
"ok": false,
"error": "invalid_auth"
}
我确定我的令牌是正确的;当我通过授权 header:
发送令牌时,API 调用成功
$ curl -s -X POST -H Authorization:\ Bearer\ $(<TOKEN) https://slack.com/api/apps.connections.open | jq .ok
true
请注意,使用 Fetch API 时不能使用授权 header,因为 CORS 限制(access-control-allow-headers header 不包括“授权”)。
我知道从浏览器调用 Slack API 通常不是一个好主意,以保持令牌的秘密。
我联系了 Slack 支持,得到了答复:他们的文档当前不正确,当您使用此 API.[=10= 时,令牌应始终作为 HTTP 授权 header 传递]
我正在尝试从浏览器调用 Slack 的 API,所以我 运行 在 Chrome 的开发控制台中关注,但出现错误:
await (await fetch("https://slack.com/api/apps.connections.open", {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
body: new URLSearchParams({'token': 'xapp-1-MYTOKEN'})
})).json()
→ {ok: false, error: 'invalid_auth'}
我认为通过请求 body 提供令牌应该没问题,因为 documentation 是这样说的:
Tokens should be passed as an HTTP Authorization header or alternatively, as a POST parameter.
我是不是漏掉了什么?
我尝试了等效的(我认为)cURL 命令,结果相同。
$ curl -s --data-urlencode token@TOKEN https://slack.com/api/apps.connections.open | jq
{
"ok": false,
"error": "invalid_auth"
}
我确定我的令牌是正确的;当我通过授权 header:
发送令牌时,API 调用成功$ curl -s -X POST -H Authorization:\ Bearer\ $(<TOKEN) https://slack.com/api/apps.connections.open | jq .ok
true
请注意,使用 Fetch API 时不能使用授权 header,因为 CORS 限制(access-control-allow-headers header 不包括“授权”)。
我知道从浏览器调用 Slack API 通常不是一个好主意,以保持令牌的秘密。
我联系了 Slack 支持,得到了答复:他们的文档当前不正确,当您使用此 API.[=10= 时,令牌应始终作为 HTTP 授权 header 传递]