如何通过API从LinkedIn获取公司帖子?

Kam*_*mit 9 php http-status-code-404 linkedin-api

我想用 PHP 从 LinkedIn 获取公司帖子。我应该使用什么请求来请求该职位?

我尝试使用 PHP 库“zoonman/linkedin-api-php-client”。我已经创建了 LinkedIn 应用程序,并已验证对公司的访问权限。我编写了获取 LinkenIn 访问令牌的代码。我尝试使用GET 'companies' 请求,但收到错误 404 或 410。

    <?php
    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);
    error_reporting(E_ALL);

    // add Composer autoloader
    include_once __DIR__ . DIRECTORY_SEPARATOR . 'vendor/autoload.php';

    // import client class
    use LinkedIn\Client;
    use LinkedIn\Scope;
    use LinkedIn\AccessToken;

    // instantiate the Linkedin client
    $client = new Client(
        'correct client id',
        'correct client secret'
    );
    $scopes = [
        Scope::READ_BASIC_PROFILE
      ];
    $client->setRedirectUrl("correct return address, which is the same as URL of current script");
    $loginUrl = $client->getLoginUrl($scopes);

    if (isset($_GET) && isset($_GET['code']))
    {
        $accessToken = $client->getAccessToken($_GET['code']);
        $client->setAccessToken($accessToken);
        $client->setApiRoot('https://api.linkedin.com/v1/'); //I've tried to use 'https://api.linkedin.com/v2/' too
        $client->setApiHeaders([
            'Content-Type' => 'application/json',
            'x-li-format' => 'json',
            'X-Restli-Protocol-Version' => '2.0.0', // use protocol v2
        ]);
        $posts = $client->get('/v1/companies/10239645/updates?format=json'); 
        //I've tried to use '/v2/companies/10239645/updates?format=json' 
        //and '/companies/10239645/updates?format=json'
        var_dump($posts);
        die();
    }
    else
    {
        header('Location: ' . $loginUrl);
    }
Run Code Online (Sandbox Code Playgroud)

我收到客户端错误('GuzzleHttp\Exception\ClientException'),具体取决于请求的地址:

  • GET https://api.linkedin.com/companies/10239645/updates?format=json产生了404 Not Found回应”
  • "GET https://api.linkedin.com/v1/companies/10239645/updates?format=json得到响应410 Gone:{ "errorCode": 0, "message": "此资源在 v1 API 下不再可用", "requestId": "CH17ME6WK6", "s (truncated...)";
  • GET https://api.linkedin.com/v2/companies/10239645/updates?format=json导致404 Not Found响应:{“serviceErrorCode”:0,“message”:“资源公司不存在”,“status”:404}”。

我想从 LinkedIn 获取公司帖子。

请求“公司”现在被禁用了吗?我应该使用什么请求(和请求地址)?现在如何从LinkedIn获取公司帖子?我的代码有什么问题?你可以帮帮我吗?

Mat*_*teo 4

您应该使用“查找所有者共享”端点。这是 v2 端点,因此要做的第一件事是更改默认 API 根,如 SDK 文档中所述:

  $client->setApiRoot('https://api.linkedin.com/v2/');
Run Code Online (Sandbox Code Playgroud)

然后尝试:

$posts = $client->get('shares?q=owners&owners=urn:li:organization:10239645'); 
Run Code Online (Sandbox Code Playgroud)

注意:检查您在 OAuth 流程中请求正确的范围(请参阅页面开头的权限部分),并且您的应用程序是否具有正确的权限(请参阅开发人员应用程序控制台中的产品部分)