如何使用 linkedin v2 api 获取电子邮件地址?

Sru*_*thy 5 php linkedin-jsapi linkedin-api

我无法通过 linkedin v2 api 获取用户的电子邮件地址。我在应用程序设置和访问令牌请求中添加了 r_emailaddress 权限。但它说。

{
"serviceErrorCode": 100,
"message": "Not enough permissions to access: GET-members /clientAwareMemberHandles",
"status": 403
}
Run Code Online (Sandbox Code Playgroud)

我的请求网址是:

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

任何人请帮我解决这个问题。

小智 7

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

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

确保您已在库中定义了范围“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);
Run Code Online (Sandbox Code Playgroud)

$response_body 将返回以下响应:

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

                )

        )

)
Run Code Online (Sandbox Code Playgroud)