net-shell/linkedin-api

LinkedIn API 客户端。处理 OAuth、CSRF 保护。易于实现和扩展。

0.6.0 2015-06-11 07:58 UTC

This package is auto-updated.

Last update: 2024-09-07 20:24:17 UTC


README

Build Status Coverage Status SensioLabsInsight Latest Stable Version Monthly Downloads

一个用于处理 LinkedIn API 身份验证和通信的 PHP 库。该库/SDK 帮助您获取访问令牌,当您已认证时,帮助您发送 API 请求。但您不会免费得到所有东西……您必须阅读 LinkedIn 文档 以了解您应该如何查询 API。

要了解这个库实际上为您做了什么,请查看 API 文档 中的身份验证页面。

功能

以下是一些可能说服您选择这个 LinkedIn 客户端而不是我们一些竞争对手的功能列表。

  • 灵活且易于扩展
  • 使用现代 PHP 标准
  • 不是为特定框架开发的。
  • 处理身份验证过程
  • 尊重 CSRF 保护
  • 测试覆盖率超过 85%。
  • 800 行代码,650 行注释。

安装

使用 Composer 安装。

composer require net-shell/linkedin-api:dev-master

使用方法

为了使用此 API 客户端(或任何其他 LinkedIn 客户端),您必须将您的应用程序注册到 LinkedIn 以获取 API 密钥。一旦您注册了 LinkedIn 应用程序,您将获得一个 API 密钥秘密密钥

LinkedIn 登录

以下示例展示了如何使用 LinkedIn 登录。

<?php

/**
 * This demonstrates how to authenticate with LinkedIn and send api requests
 */

/*
 * First you need to make sure you've used composers auto load. You have is probably 
 * already done this before. You usually don't bother..
 */
//require_once "vendor/autoload.php";

$linkedIn=new Happyr\LinkedIn\LinkedIn('app_id', 'app_secret');

if ($linkedIn->isAuthenticated()) {
    //we know that the user is authenticated now. Start query the API
    $user=$linkedIn->get('v1/people/~:(firstName,lastName)');
    echo "Welcome ".$user['firstName'];

    exit();
} elseif ($linkedIn->hasError()) {
    echo "User canceled the login.";
    exit();
}

//if not authenticated
$url = $linkedIn->getLoginUrl();
echo "<a href='$url'>Login with LinkedIn</a>";

如何在 LinkedIn 墙上发布内容

以下示例展示了如何在用户的墙上发布内容。访问令牌从数据库中获取。

$linkedIn=new Happyr\LinkedIn\LinkedIn('app_id', 'app_secret');
$linkedIn->setAccessToken('access_token_from_db');

$options = array('json'=>
    array(
        'comment' => 'Im testing Happyr LinkedIn client! https://github.com/Happyr/LinkedIn-API-client',
        'visibility' => array(
            'code' => 'anyone'
        )
    )
);

$result = $linkedIn->post('v1/people/~/shares', $options);

var_dump($result);

// Prints: 
// array (size=2)
//   'updateKey' => string 'UPDATE-01234567-0123456789012345678' (length=35)
//   'updateUrl' => string 'https://www.linkedin.com/updates?discuss=&scope=01234567&stype=M&topic=0123456789012345678&type=U&a=mVKU' (length=104)

当然,您也可以使用 xml 格式进行相同的操作。使用以下选项数组。

$options = array(
'format' => 'xml',
'body' => '<share>
 <comment>Im testing Happyr LinkedIn client! https://github.com/Happyr/LinkedIn-API-client</comment>
 <visibility>
   <code>anyone</code>
 </visibility>
</share>');

配置

API 选项

LinkedIn::api 的第三个参数是一个包含选项的数组。它们最终将被传递给 Request 客户端,但在那之前我们会进行一些修改。以下是您可能使用的数组键的表格。

如果您正在使用 GuzzleRequest(默认),您可能想查看 其文档 以了解更多可用选项。

更改格式

与 LinkedIn API 通信时的默认格式是 json。这意味着当您调用 LinkedIn::api 时,您将获得一个数组作为响应。更改格式很容易。

// By constructor argument
$linkedIn=new Happyr\LinkedIn\LinkedIn('app_id', 'app_secret', 'xml');

// By setter
$linkedIn->setFormat('xml');

// Set format for just one request
$linkedIn->get('v1/people/~:(firstName,lastName)', array('format'=>'xml'));

格式 选项有一个例外:当您指定 $options['json'=>...] 时,格式始终是 json。

以下表格指定了在调用 LinkedIn::api 时什么格式返回什么。

使用不同的 Request 或 Session 类

您可能想使用默认的 SessionStorage 以外的存储。如果您正在使用 Laravel,您更有可能注入 IlluminateSessionStorage

$linkedIn=new Happyr\LinkedIn\LinkedIn('app_id', 'app_secret');
$linkedIn->setStorage(new IlluminateSessionStorage());

您可以注入任何实现 DataStorageInterface 的类。您还可以注入不同的请求和 URL 生成器类。

使用不同的作用域

如果您希望在验证用户时定义特殊作用域,您应该在生成登录URL时指定它们。如果您未指定作用域,LinkedIn将使用您为应用配置的默认作用域。

$scope = 'r_fullprofile,r_emailaddress,w_share';
//or 
$scope = array('rw_groups', 'r_contactinfo', 'r_fullprofile', 'w_messages');

$url = $linkedIn->getLoginUrl(array('scope'=>$scope));
echo "<a href='$url'>Login with LinkedIn</a>";

框架集成

看看我是如何将其与Symfony2集成的。