PHP的非官方Tumblr API客户端。

0.1.1 2019-07-24 14:33 UTC

This package is auto-updated.

Last update: 2024-09-05 06:47:27 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只有2个非常基本的方法

  • 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许可证许可。