PHP 的非官方 Tumblr API 客户端。

0.1.0 2015-09-25 16:54 UTC

This package is not auto-updated.

Last update: 2024-09-28 18:42:20 UTC


README

Build Status

PHP 对 Tumblr API 的非官方客户端。

安装

通过 Composer,您需要添加包 matheusmariano/tumblr

使用

use MatheusMariano\Tumblr\Client;
use MatheusMariano\Tumblr\Connector\Auth\ApiKey;

$auth = new ApiKey('my-api-key');
$client = new Client($auth);

$object = $client->get('blog/nutright.tumblr.com/posts', [
    'api_key' => true,
    'tag' => 'fruit'
]);

认证

在使用 API 的任何方法之前,需要认证我们的客户端。为此,有两种认证级别:

  • API 密钥
  • OAuth

API 密钥级别是最简单的,因为它只需要 Tumblr 在 注册您的应用程序 时提供的 消费者密钥。要使用它,您应该导入 ApiKey

use MatheusMariano\Tumblr\Connector\Auth\ApiKey;

然后使用您的 消费者密钥 实例化它。

$auth = new ApiKey('your-consumer-key');

您可以使用 OAuth 级别以几乎相同的方式,导入 OAuth

use MatheusMariano\Tumblr\Connector\Auth\OAuth;

然后使用所有必要的密钥实例化。

$auth = new OAuth; // Also accepts ordered parameters.
$auth->consumerKey = '...';
$auth->consumerSecret = '...';
$auth->oauthToken = '...';
$auth->oauthTokenSecret = '...';

OAuth 令牌和授权者

从用户那里获取令牌是一项稍微复杂一点的任务,因为它们需要被告知并授权您的应用程序。这是一个涉及许多步骤的过程,但 Authorizer 类使一切变得更容易。对于每个使用的页面,您应该以这种方式导入类。

use MatheusMariano\Tumblr\Authorizer;

第一步是将您的消费者发送到 Tumblr,并带上您的回调 URI。让我们假设它应该是 https://example.com/auth/tumblr/callback

$auth = new OAuth;
$auth->consumerKey = '...';
$auth->consumerSecret = '...';

$authorizer = new Authorizer($auth);
$tokens = $authorizer->getTemporaryTokens('https://example.com/auth/tumblr/callback');

如果消费者被接受,您应该收到临时令牌。

['oauth_token' => '...', 'oauth_token_secret' => '...']

保存这些令牌,因为它们对于下一个会话是必要的。现在您需要将用户重定向到 https://www.tumblr.com/oauth/authorize?oauth_token={$tokens['oauth_token']}。在那里,他们将能够授权您的应用程序,然后将被重定向到回调 URI。

https://example.com/auth/tumblr/callback 中,步骤是发送消费者和临时令牌以及从 Tumblr 收到的 GET 参数 oauth_verifier

$auth = new OAuth;
$auth->consumerKey = '...';
$auth->consumerSecret = '...';
$auth->oauthToken = $oauthToken;
$auth->oauthTokenSecret = $oauthTokenSecret;

$authorizer = new Authorizer($auth);
$tokens = $authorizer->getTokens($oauthVerifier);

如果您愿意,可以使用全局 $_GET 来获取 oauth_verifier

$oauthVerifier = $_GET['oauth_verifier'];

如果一切按计划进行,您应该收到用户的最终令牌。

客户端

配置了这些认证器之一后,您可以导入 Client

use MatheusMariano\Tumblr\Client;

然后使用认证器实例化它。

$client = new Client($auth);

方法

在这个包的 0.1 版本中,Client 只有两个非常基本的方法

  • get
  • post

重要的是要遵循 Tumblr API 来使用这些方法并正确处理您的响应。

示例:获取带有 fruit 标签的 文本帖子

$object = $client->get('blog/nutright.tumblr.com/posts/text', [
    'api_key' => true,
    'tag' => 'fruit',
]);

响应应该是一个包含 response 所有内容的 stdClass 对象,遵循 Tumblr API

$object->total_posts; // int
$object->posts; // array
$object->blog; // stdClass
$object->blog->title; // string

post 方法的工作方式相同。

$client->post('blog/nutright.tumblr.com/post', [
    'type' => 'text',
    'tags' => 'fruit, apple, red',
    'title' => 'My new post title',
    'body' => 'My new post body...',
]);

异常

请求方法可能会收到错误,通常是 401 未授权404 未找到,抛出如 GuzzleHttp\Exception\ClientExceptionGuzzleHttp\Exception\ServerException 等异常,这些异常应该使用 try...catch 来处理。有关更多信息,请参阅 Guzzle 文档

try {
    $client->get('blog/nutright.tumblr.com/followers', ['api_key' => true]);
} catch (\GuzzleHttp\Exception\ClientException $e) {
    // Do something
}

许可

PHP Tumblr 客户端是一个开源软件,许可协议为 MIT 许可。