如何使用Linkedin v2 API获取电子邮件地址?

5

我无法通过LinkedIn V2 API获取用户的电子邮件地址。 我已在应用程序设置中添加了r_emailaddress权限,并在访问令牌请求中添加了该权限,但它仍然显示以下信息。

{
"serviceErrorCode": 100,
"message": "Not enough permissions to access: GET-members /clientAwareMemberHandles",
"status": 403
}

我的请求 URL 是:

https://api.linkedin.com/v2/clientAwareMemberHandles?q=members&projection=(elements*(primary,type,handle~))&oauth2_access_token=".$token

请有人帮助我解决这个问题。

2个回答

7

您可以通过以下EP访问linkedin用户的电子邮件地址:

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

请确保您已在库中定义了“r_emailaddress”范围。

您可以使用以下curl请求获取数据:

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $Url);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
      'Authorization: Bearer '. $token,
      'X-Restli-Protocol-Version: 2.0.0',
      'Accept: application/json',
      'Content-Type: application/json'
    ));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_VERBOSE, 1);
    curl_setopt($ch, CURLOPT_HEADER, 1);
    $response = curl_exec($ch);
    $headerSize = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
    $body = substr($response, $headerSize);
    $response_body = json_decode($body,true);

$response_body 将返回以下响应:

Array (
    [elements] => Array
        (
            [0] => Array
                (
                    [handle] => urn:li:emailAddress:123456
                    [handle~] => Array
                        (
                            [emailAddress] => your@email.in
                        )

                )

        )

)

0

使用这种类型的响应,“handle~”值不容易获取,下一步应该是:

 $email = [];
 $response_body = json_decode($res->getBody());
        $object = $response_data->elements[0];
          foreach ($object as $value){
           $email[] = $value->emailAddress;
         }
print_r($email[0]);

你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心中找到有关如何编写良好答案的更多信息。 - Community
这并没有提供问题的答案。一旦您拥有足够的声望,您将能够评论任何帖子;而不是,提供不需要询问者澄清的答案。- 来自审核 - Semih Arslanoglu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接