当请求 email-address 时,Linkedin API 返回 403(禁止访问)

Linked In API returning 403 (Forbidden) when a request for email-address is made

我正在尝试从他们的领英中获取用户的电子邮件地址。

我完成了整个 OAuth 2.0 授权代码流程并获得了一个访问令牌,但是当我向端点 https://api.linkedin.com/v2/me?projection=(email-address) 发出 GET 请求时,它 returns 一个 403(禁止)HTTP 状态代码。

事情是这样的:

  1. 当我在请求授权码时在scope参数中指定r_liteprofile r_email-address作为权限时,以及在请求数据时,作为fields,参数 projection=(localizedFirstName, localizedLastName, email-address),我得到 200 HTTP 状态代码,但在结果 JSON 中,我只得到 localizedFirstNamelocalizedLastName 值。

  2. 如果我在 scope 参数中仅指定 r_emailaddress 权限并在请求数据时指定 projection=(email-address),我将收到 403(禁止)状态代码。

  3. 如果我在 scope 字段中仅指定 r_emailaddress 而未指定任何字段,即我在没有任何参数的情况下点击了 https://api.linkedin.com/v2/me 端点(但是访问令牌在 Authorization header 中作为 Bearer 方案令牌适当发送),我得到 403(禁止)HTTP 状态代码。

我的应用程序确实具有 r_emailaddress 的权限,因为这是在创建时授予所有应用程序的基本权限,不需要批准。

我是否找到了获取电子邮件地址的正确端点?一切似乎都很好,但我仍然收到 403。这是怎么回事?

检索电子邮件地址的请求是:

GET https://api.linkedin.com/v2/emailAddress?q=members&projection=(elements*(handle~))

您需要请求 r_emailaddress 范围才能使用此端点。

参考https://docs.microsoft.com/en-us/linkedin/consumer/integrations/self-serve/sign-in-with-linkedin?context=linkedin/consumer/context