matheusmariano / tumblr
PHP 的非官方 Tumblr API 客户端。
Requires
- php: >=5.6.0
- guzzlehttp/oauth-subscriber: 0.3.*
Requires (Dev)
- mockery/mockery: ~0.9.4
- phpunit/phpunit: ~4.8
This package is not auto-updated.
Last update: 2024-09-28 18:42:20 UTC
README
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\ClientException
、GuzzleHttp\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 许可。