使用php和Tumblr API发布到Tumblr

For*_*ord 10 php api cron oauth tumblr

我正在尝试将消息自动发布到我的Tumblr博客(每天通过Cron运行)

我在这里使用官方Tumblr PHP库:https: //github.com/tumblr/tumblr.php

并使用此处详述的身份验证方法:https: //github.com/tumblr/tumblr.php/wiki/Authentication (或部分内容,因为我不需要用户输入!)

我有以下代码

require_once('vendor/autoload.php');

// some variables that will be pretttty useful
$consumerKey = 'MY-CONSUMER-KEY';
$consumerSecret = 'MY-CONSUMER-SECRET';
$client = new Tumblr\API\Client($consumerKey, $consumerSecret);
$requestHandler = $client->getRequestHandler();
$blogName = 'MY-BLOG-NAME';
$requestHandler->setBaseUrl('https://www.tumblr.com/');

// start the old gal up
$resp = $requestHandler->request('POST', 'oauth/request_token', array());

// get the oauth_token
$out = $result = $resp->body;
$data = array();
parse_str($out, $data);

// set the token
$client->setToken($data['oauth_token'], $data['oauth_token_secret']);

// change the baseURL so that we can use the desired Methods
$client->getRequestHandler()->setBaseUrl('http://api.tumblr.com');

// build the $postData into an array
$postData = array('title' => 'test title', 'body' => 'test body');

// call the creatPost function to post the $postData
$client->createPost($blogName, $postData);
Run Code Online (Sandbox Code Playgroud)

但是,这给我以下错误:

致命错误:未捕获Tumblr\API\RequestException:[401]:第426行/ home// /*/vendor/tumblr/tumblr/lib/Tumblr/API/Client.php中未授权

我可以使用(示例)检索博客帖子和其他数据:

echo '<pre>';
print_r( $client->getBlogPosts($blogName, $options = null) );
echo '</pre>';
Run Code Online (Sandbox Code Playgroud)

所以它似乎只是在做一个我无法管理的帖子.

说实话,我真的不了解oauth身份验证,所以我使用的代码是更有价值的编码人员免费提供的:-)我认为我可以编辑出部分https://github.com/tumblr/tumblr .php/wiki /身份验证,因为我不需要用户输入,因为这只是直接从我的服务器运行的代码(通过Cron)

我花了几天时间在互联网上寻找一些答案(已经进一步了解),但我完全陷入了这个问题......

任何建议都非常感谢!

Nat*_* F. 0

看起来您在代码中删除的部分与所需操作所需的 OAuth 流程的一部分相关。

// exchange the verifier for the keys
Run Code Online (Sandbox Code Playgroud)

您可以尝试运行身份验证示例本身并删除已删除的代码部分,直到它不再起作用。这将缩小导致问题的范围。我个人对 OAuth 不太熟悉,但这看起来似乎是问题的一部分,因为您取出的主要部分之一是围绕 OAuth 流程交换 OAuth 密钥的验证程序。