【问题标题】:API calls #LinkedIn for r_basicprofileAPI 为 r_basicprofile 调用 #LinkedIn
【发布时间】:2019-03-26 22:38:45
【问题描述】:

我已经仔细阅读了关于 API 调用的 LinkedIn 开发人员文档,按照文档,我能够请求访问代码,与服务器交换它并设法获取访问令牌。

在那之后,我设法获取了一些会员的个人资料,使用 json 格式的访问令牌和下面的代码。

$api_url = 'https://api.linkedin.com/v1/people/~:(id,first-name,last-name,email-address)?format=json';
$context = stream_context_create(array(
    'http' => array(
        'header' => "Authorization: Bearer " . $accessToken
    ),
));

$result = file_get_contents($api_url, false, $context);
echo $result;

但是问题是:尝试进行任何不同的调用都会失败,尽管它们是根据 LinkedIn 的文档并且它们被允许用于 r_basicprofile,但是错误:

警告: 文件获取内容(https://api.linkedin.com/v2/people/~:(industryId~)?format=json): 无法打开流:HTTP 请求失败! HTTP/1.0 403 禁止

我尝试了以下一些方法,但没有成功

$api_url = 'https://api.linkedin.com/v2/me';
$context = stream_context_create(array(
    'http' => array(
        'header' => "Authorization: Bearer " . $accessToken
    ),
));

$result = file_get_contents($api_url, false, $context);
echo $result;

我什至尝试通过以下 GET 请求获取成员的个人资料,但返回相同的 403。

https://api.linkedin.com/v2/people/(id:{个人 ID})

https://api.linkedin.com/v2/people/(id:{profileID})?projection=(id,firstName,lastName,industryId~)

希望了解如何拨打这些电话,以及出了什么问题。

【问题讨论】:

    标签: php api oauth-2.0 linkedin


    【解决方案1】:

    问题在于 V2 api 要求您与linkedin 建立合作伙伴关系。这意味着您会收到 403 禁止错误。

    与 LinkedIn 合作为您提供额外的 API 功能和数据访问,增加呼叫限制和专用 支持。详细了解我们的各种合作伙伴计划和用例 看看一个是否适合您的应用程序。只接受申请 当我们认为他们正在为会员、开发人员和 领英。

    来源: https://developer.linkedin.com/partner-programs

    幸运的是,您需要 V1 版本的 api。

    https://api.linkedin.com/v1/people/{ID}?format=json
    

    【讨论】:

    • 非常感谢您提供的信息,能否请您给我一个链接,指向一些有关 V1 的材料,除了基本的 API 调用,LinkedIn 文档中的所有其他调用都是针对 V2 的,此外GET请求中的变量在版本之间是不同的(即v1:名字,v2:名字),因此我应该有一些更好的阅读
    • 不幸的是没有/缺少关于linkedin api V1的信息。但对于 people api,我发现的所有可能性都是:/v1/people/[personID]:(firstName,lastName,headline,positions:(company,title,summary,startDate,endDate,isCurrent),industry,location:(name,country:(code)),pictureUrl,publicProfileUrl,emailAddress)?format=json
    【解决方案2】:

    将您的 LinkedIN JS SDK 添加到您的网站,应如下所示:

    <script type="text/javascript" src="//platform.linkedin.com/in.js">
      api_key:                 <!-- YOUR CLIENT ID (API KEY) HERE -->
      onLoad:                  LinkedINJSAPI.onLoad
      authorize:               true
      credentials_cookie:      true
      credentials_cookie_crc:  true
    </script>
    

    在您的 JavaScript 中添加以下内容:

     var LinkedINJSAPI = {
       onLoad: function(){
         IN.User.authorize(LinkedINJSAPI.request, this );
       },
       request: function(){
        var url = 'people/~:(firstName,lastName,emailAddress,positions,location)?format=json';
        IN.API.Raw(url).
          method('GET').
          result(function(result){
            console.log( JSON.stringify( result ) );
          }).
          error(function(error){
            console.error( error.message );
          });
       }
     }
    

    你可以在这里看到一个工作演示......

    https://codepen.io/craigiswayne/pen/KGbqRq

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-06-05
      • 2019-05-18
      • 1970-01-01
      • 1970-01-01
      • 2015-02-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多