尝试获取用户配置文件 API 时 sendgrid 错误“禁止访问”

Shi*_*ine 14 sendgrid

以下 API 请求:

curl --request GET \
     --url https://api.sendgrid.com/v3/user/profile \
     --header 'Authorization: Bearer API KEY'\
     --header 'Content-Type: application/json'
Run Code Online (Sandbox Code Playgroud)

来自文档:https : //sendgrid.com/docs/API_Reference/Web_API_v3/user.html

结果是带有以下正文的 HTTP 403 响应:

{"errors":[{"field":null,"message":"access forbidden"}]}
Run Code Online (Sandbox Code Playgroud)

我转到“设置”->“API 密钥”并单击“编辑详细信息”以查看授予我的 API 密钥的权限,据我所知,没有任何我可以授予(或撤销)似乎相关的权限到“用户个人资料”。

为了安全起见,如果“完全访问”不可用,我已将每个权限配置为“完全访问”(可用时)或“读取访问”,但我仍然收到此 HTTP 403 错误。

为了能够检索我的用户个人资料,我需要授予我的 API 密钥什么权限?

mol*_*vec 22

旧版 API 不起作用。使用新的 API

我不知道它是否解决了某人,但我尝试使用此文档将联系人添加到 sendgrid 获取 {"errors":[{"field":null,"message":"access forbidden"}]}:

https://sendgrid.com/docs/API_Reference/Web_API_v3/Marketing_Campaigns/contactdb.html#Add-Single-Recipient-POST

POST POST https://api.sendgrid.com/v3/contactdb/recipients HTTP/1.1
Run Code Online (Sandbox Code Playgroud)

搜索更多后,我注意到一个新文档(相同版本的 API v3),但有非常不同的 API 方法:

https://sendgrid.api-docs.io/v3.0/contacts/add-or-update-a-contact

PUT https://api.sendgrid.com/v3/marketing/contacts
Run Code Online (Sandbox Code Playgroud)

  • 是的,有一个用于营销活动的旧 API 和一个新 API。旧版 API 不适用于新帐户,您会收到“访问被拒绝”错误。您必须使用新的营销活动 API。 (2认同)
  • 这对我帮助很大。对于 SendGrid 的任何人来说 - API 文档记录了旧的 API 界面,这令人沮丧。 (2认同)

Jus*_*ele 11

我深入研究并自己尝试了各种方法。

您无法通过网站 UI 设置此操作的权限。您必须通过 API 调用来设置权限。

https://sendgrid.com/docs/API_Reference/Web_API_v3/API_Keys/api_key_permissions_list.html#User-Settings显示用户设置的所有可能权限/范围的列表。

https://sendgrid.com/docs/API_Reference/Web_API_v3/API_Keys/index.html#Update-the-name-amp-scopes-of-an-API-Key-PUT解释了如何向您的 API 密钥添加范围。

补充:所以这比那更令人费解。您不能使用 API 密钥来修改 API 密钥,除非该密钥已经具有“api_keys.update”的权限/范围。这意味着您发现自己陷入了困境 22。而不是使用“Authroization: Bearer {API_KEY}”授权标头,您需要进行第一次调用以更新 API 密钥以使用基本授权标头(如“Authorization: Basic {base64Encoded("用户名:密码")}"。相当复杂,现在处理起来很痛苦。听起来他们希望在几周内推出更新的用户界面,这样我们都可以在未来避免这个小问题 22。


小智 5

这个错误也是由于api key权限不足导致的。

https://sendgrid.com/docs/API_Reference/Web_API_v3/API_Keys/api_key_permissions_list.html#User-Settings

为了api key仅使用:

Go to Settings > Api keys > Edit Api Key > User Account
Run Code Online (Sandbox Code Playgroud)

中提琴!使用 API 密钥作为身份验证就像一个魅力。

curl --request GET \
 --url https://api.sendgrid.com/v3/user/profile \
 --header 'Authorization: Bearer API KEY'\
 --header 'Content-Type: application/json'
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助 :)