gostellarco/nylas-php

Nylas PHP SDK (API版本2.1)

4.2.5 2021-05-11 01:53 UTC

README

Nylas PHP SDK

Build Code Quality Packagist Version (including pre-releases) Packagist Stars Total Downloads Packagist PHP Version Support License

PHP绑定Nylas REST API (V2.1)。 https://docs.nylas.com/reference
未来更新中,我会尝试跟进NyLas 变更日志

最后检查时间: 加拿大和爱尔兰的仪表板发布

有什么新功能?

  1. 支持API 2.1
  2. 此SDK中实现了所有Nylas API。
  3. 支持发送和获取原始类型的消息
  4. 支持异步批量上传和下载
    — 联系人图片下载
    — 文件上传和下载
  5. 方法所需参数几乎与Nylas官方API所需参数相同。
  6. 支持异步批量获取、删除和发送(自版本3.1起)。
  7. 链式调用和良好的代码提示,易于使用

安装(自版本4.0起需要PHP 7.4)

3.x版本适用于php >= 7.3(分支3.0)

4.x版本适用于php >= 7.4(主分支)

此库可在https://packagist.org.cn/packages/lanlin/nylas-php上找到
您可以通过运行以下命令进行安装

composer require lanlin/nylas-php

用法

App ID和密钥

在与Nylas REST API交互之前,
您需要在https://www.nylas.com/创建Nylas开发者帐户。
创建开发者帐户后,您可以创建一个新应用以生成App ID / 密钥对。

通常,您应该将App ID和密钥存储在环境变量中,以避免将其添加到源代码控制中。
测试项目使用配置文件,以便更容易开始。

初始化Nylas-PHP

提示: 自版本4.1.2起已移除'off_decode_error',请参阅错误 & 异常

use Nylas\Client;

$options =
[
    'debug'            => true,
    'region'           => 'oregon',   // server region, can be oregon, ireland or canada, default is oregon
    'log_file'         => dirname(__FILE__) . '/test.log',  // a file path or a resource handler
    'account_id'       => 'your account id',
    'access_token'     => 'your access token',

    'client_id'        => 'your client id',        // required
    'client_secret'    => 'your client secret'     // required
];

$nylas = new Client($options);

选项设置

您可以使用以下方法修改选项

$nylas->Options()->

批量请求

大多数带有get & delete前缀的方法都支持批量请求。

$id  = 'id_xxx';
$ids = ['id_xxx', 'id_yyy', ...];

// one per time
$dataA = $nylas->Contacts()->Contact()->getContact($id);
$dataB = $nylas->Contacts()->Contact()->deleteContact($id);

// batch request
$dataC = $nylas->Contacts()->Contact()->getContact($ids);
$dataD = $nylas->Contacts()->Contact()->deleteContact($ids);

有关批量请求的更多详细信息,您应该阅读源代码。
抱歉,我没有时间编写文档。

身份验证

您有两种方式可以验证用户的应用程序。
托管和本地都受支持。

以下是服务器端(三腿)OAuth示例

  1. 您将用户重定向到Nylas登录页面,同时包含您的App Id和密钥
  2. 用户登录
  3. 她被重定向到您的回调URL,同时带有访问代码
  4. 您使用此访问代码从API获取授权令牌

有关使用Nylas进行身份验证的更多信息,
请访问开发者文档

在实践中,Nylas REST API客户端将此简化为两个步骤。

步骤1:将用户重定向到Nylas

$params =
[
    'state'        => 'testing',
    'login_hint'   => 'test@gmail.com',
    'redirect_uri' => 'https://www.test.com/redirect_callback',
];

// generate the url that your user need be redirect to.
$url = $nylas->Authentication()->Hosted()->getOAuthAuthorizeUrl($params);

步骤2:您的用户登录
步骤3:您从Nylas回调中获取访问代码
请自行实现上述2 & 3步骤。

步骤4:使用访问代码获取授权令牌

$data = $nylas->Authentication()->Hosted()->postOAuthToken($params);

// save your token some where
// or update the client option
$nylas->Options()->setAccessToken("pass the token you got");

错误与异常

  1. 从nylas返回的常见错误代码被包装成异常(参见 src/Exceptions),异常代码与nylas API 错误列表相同

  2. 当响应数据不是有效的JSON字符串或者甚至不是JSON内容类型时,您将得到如下数组

    [
        'httpStatus'  => 'http status code',
        'invalidJson' => true,
        'contentType' => 'response header content type',
        'contentBody' => 'response body content',
    ]
  3. 对于所有以异步模式执行的方法,在发生错误时不会抛出异常,而是返回一个包含所有数据和异常的数组,如下所示

    [
        // ...
        [
            'error'     => true,
            'code'      => 'exception code',
            'message'   => 'exception message',
            'exception' => 'exception instance',
        ],
        // ...
    ]
  4. 某些电子邮件提供商可能不支持所有功能,例如:日历、事件。因此,您可能会得到一个名为BadRequestException的异常,代码为400,并带有相应的消息

    Malformed or missing a required parameter, or your email provider not support this.
  5. log_file参数仅在debug设置为true时才起作用,此时将记录HTTP请求的详细信息。

    提示:nylas-php使用guzzlehttp进行HTTP请求。但guzzlehttp只支持资源类型作为调试处理程序(cURL CURLOPT_STDERR需要此功能)。

    对于想要使用psr/log接口进行调试的人来说,您可以初始化一个临时资源,并将处理程序传递给nylas-php,然后在调用一些方法后从临时资源中获取日志内容。

    $handler = fopen('php://temp', 'w+');
    
    $options =
    [
        'log_file' => $handler,
        ...
    ];
    
    $nylas = new Client($options);
    $nylas->doSomething();
    ....
    
    rewind($handler);
    $logContent = stream_get_contents($handler);
    fclose($handler);
    
    $yourPsrLogger->debug($logContent);

启动测试

  1. 初始化composer依赖项 composer install
  2. tests/AbsCase.php中添加您的信息
  3. 使用composer run-script test启动测试
  4. 运行测试的另一种方法:./tests/do.sh foo.php --filter fooMethod,请参阅tests/do.sh

支持的方法

方法所需参数几乎与Nylas官方API所需参数相同。

对于更详细的信息,您可以查看该方法的测试或源代码。

账户

$nylas->Accounts()->Account()->xxx();
$nylas->Accounts()->Manage()->xxx();

身份验证

$nylas->Authentication()->Hosted()->xxx();
$nylas->Authentication()->Native()->xxx();

日历

$nylas->Calendars()->Calendar()->xxx();

联系人

$nylas->Contacts()->Contact()->xxx();
// multiple contact pictures download
$params =
[
    [
        'id'   => 'contact id',
        'path' => 'this can be a file path, resource or stream handle',
    ],
    [
        'id'   => 'xxxx',
        'path' => dirname(__FILE__) . '/correct.png',
    ],
    // ...
];

$nylas->Contacts()->Contact()->getContactPicture($params);

差异

$nylas->Deltas()->Delta()->xxx();

草稿

$nylas->Drafts()->Draft()->xxx();
$nylas->Drafts()->Sending()->xxx();

事件

$nylas->Events()->Event()->xxx();

文件

$nylas->Files()->File()->xxx();
// multiple files download
$params =
[
    [
        'id'   => 'file id',
        'path' => 'this can be a file path, resource or stream handle',
    ],
    [
        'id'   => 'xxxx',
        'path' => dirname(__FILE__) . '/correct.png',
    ],
    // ...
];

$nylas->Files()->File()->downloadFile($params);


// multiple files upload
$params =
[
    [
        'contents' => 'this can be a file path, resource or stream handle',
        'filename' => 'your file name'
    ],
    [
        'contents' => dirname(__FILE__) . '/correct.png',
        'filename' => 'test_correct.png'
    ],
    // ...
];

$nylas->Files()->File()->uploadFile($params);

文件夹

$nylas->Folders()->Folder()->xxx();

标签

$nylas->Labels()->Label()->xxx();

作业状态

$nylas->JobStatuses()->JobStatus()->xxx();

消息

$nylas->Messages()->Message()->xxx();
$nylas->Messages()->Search()->xxx();
$nylas->Messages()->Sending()->xxx();
$nylas->Messages()->Smart()->xxx();

线程

$nylas->Threads()->Search()->xxx();
$nylas->Threads()->Thread()->xxx();
$nylas->Threads()->Smart()->xxx();

Webhooks

$nylas->Webhooks()->Webhook()->xxx();

贡献

有关更多使用示例,请查看测试。
请随意使用它,如果您修复了任何内容或添加了功能,请随时向我发送pull request。

许可证

本项目受MIT许可证许可。