Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Tumblr OAuth–;缺少或无效的请求令牌_Php_Api_Oauth_Tumblr - Fatal编程技术网

Php Tumblr OAuth–;缺少或无效的请求令牌

Php Tumblr OAuth–;缺少或无效的请求令牌,php,api,oauth,tumblr,Php,Api,Oauth,Tumblr,通过OAuth对Tumblrs API进行授权时遇到一些问题。 这就是我的callback.php中发生的事情: require_once('../vendor/autoload.php'); // some variables that will be pretttty useful $consumerKey = 'xxx'; $consumerSecret = 'xxx'; $client = new Tumblr\API\Client($consumerKey, $consumerSec

通过OAuth对Tumblrs API进行授权时遇到一些问题。
这就是我的
callback.php中发生的事情:

require_once('../vendor/autoload.php');

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

// Fetch the current URL which holds important data
$link = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";

// get the verifier value
$verifier = $_GET['oauth_verifier'];

// exchange the verifier for the keys
$resp = $requestHandler->request('POST', 'oauth/access_token', array('oauth_verifier' => $verifier));
$out = $result = $resp->body;
$data = array();
parse_str($out, $data);

echo '<pre>';
var_dump($data);
echo '</pre>';

$token = $data['oauth_token'];
$secret = $data['oauth_token_secret'];
echo "\ntoken: " . $token . "\nsecret: " . $secret;

// and prove we're in the money
$client = new Tumblr\API\Client($consumerKey, $consumerSecret, $token, $secret);
$info = $client->getUserInfo();
echo "\ncongrats " . $info->user->name . "!\n";
我错过了什么?



不确定它是否重要,但为了将来的工作提供参考,我最初的
connect.php
如下所示:

session_start();

require_once('../vendor/autoload.php');

// some variables that will be pretttty useful
$consumerKey = 'xxx';
$consumerSecret = 'xxx';
$client = new Tumblr\API\Client($consumerKey, $consumerSecret);
$requestHandler = $client->getRequestHandler();
$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);

$_SESSION['request_token'] = $data['oauth_token'];
$_SESSION['request_token_secret'] = $data['oauth_token_secret'];

if($data['oauth_callback_confirmed']) {
    // redirect
    $url = 'https://www.tumblr.com/oauth/authorize?oauth_token=' . $data['oauth_token'];
    header('Location: '.$url);
} else {
    echo 'Could not connect to Tumblr. Refresh the page or try again later.';
}
exit();

Doh,最后它是一种简单的请求令牌和秘密请求令牌是在
connect.php
中生成的,需要保存在
callback.php
中以供访问

这只需使用会话变量即可解决。 因为我还没有看到任何关于如何用官方Tumblr PHP客户端实现这一点的工作示例,我希望这将对其他人有益

完整代码如下

connect.php

session_start();

require_once('../vendor/autoload.php');

// some variables that will be pretttty useful
$consumerKey = 'xxx';
$consumerSecret = 'xxx';
$client = new Tumblr\API\Client($consumerKey, $consumerSecret, $_SESSION['request_token'], $_SESSION['request_token_secret']);
$requestHandler = $client->getRequestHandler();
$requestHandler->setBaseUrl('https://www.tumblr.com/');

unset($_SESSION['request_token']);
unset($_SESSION['request_token_secret']);

$link = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$verifier = $_GET['oauth_verifier'];

$resp = $requestHandler->request('POST', 'oauth/access_token', array('oauth_verifier' => $verifier));
$out = $result = $resp->body;
$data = array();
parse_str($out, $data);

echo '<pre>';
var_dump($data);
echo '</pre>';

// and print out our new keys
$token = $data['oauth_token'];
$secret = $data['oauth_token_secret'];
echo "\ntoken: " . $token . "\nsecret: " . $secret;

// and prove we're in the money
$client = new Tumblr\API\Client($consumerKey, $consumerSecret, $token, $secret);
$info = $client->getUserInfo();
echo "\ncongrats " . $info->user->name . "!\n";
callback.php

session_start();

require_once('../vendor/autoload.php');

// some variables that will be pretttty useful
$consumerKey = 'xxx';
$consumerSecret = 'xxx';
$client = new Tumblr\API\Client($consumerKey, $consumerSecret, $_SESSION['request_token'], $_SESSION['request_token_secret']);
$requestHandler = $client->getRequestHandler();
$requestHandler->setBaseUrl('https://www.tumblr.com/');

unset($_SESSION['request_token']);
unset($_SESSION['request_token_secret']);

$link = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$verifier = $_GET['oauth_verifier'];

$resp = $requestHandler->request('POST', 'oauth/access_token', array('oauth_verifier' => $verifier));
$out = $result = $resp->body;
$data = array();
parse_str($out, $data);

echo '<pre>';
var_dump($data);
echo '</pre>';

// and print out our new keys
$token = $data['oauth_token'];
$secret = $data['oauth_token_secret'];
echo "\ntoken: " . $token . "\nsecret: " . $secret;

// and prove we're in the money
$client = new Tumblr\API\Client($consumerKey, $consumerSecret, $token, $secret);
$info = $client->getUserInfo();
echo "\ncongrats " . $info->user->name . "!\n";
session_start();
需要_once('../vendor/autoload.php');
//一些非常有用的变量
$consumerKey='xxx';
$ConsumerCret='xxx';
$client=new Tumblr\API\client($consumerKey,$consumerSecret,$\u SESSION['request\u token'],$\u SESSION['request\u token\u secret']);
$requestHandler=$client->getRequestHandler();
$requestHandler->setBaseUrl('https://www.tumblr.com/');
取消设置($_会话['request_token']);
取消设置($_会话['request_token_secret']);
$link=“http://$\u服务器[http\u主机]$\u服务器[REQUEST\u URI]”;
$verifier=$\u GET['oauth\u verifier'];
$resp=$requestHandler->request('POST','oauth/access_-token',array('oauth_-verifier'=>$verifier));
$out=$result=$resp->body;
$data=array();
parse_str($out$data);
回声';
var_dump($数据);
回声';
//打印出我们的新钥匙
$token=$data['oauth_token'];
$secret=$data['oauth_-token_-secret'];
回显“\n回显:”$代币“\n信任:”$秘密
//证明我们有钱
$client=new Tumblr\API\client($consumerKey、$consumerSecret、$token、$secret);
$info=$client->getUserInfo();
回显“\n图像”$信息->用户->名称。“!\n”;

@mikeddt这个嗯,是的,这是用官方的吗?然而,我从另一个库借用了会话变量的概念。我的错误是,我回滚了更改。你能不能澄清一下,你是在把官方客户和另一个客户混为一谈?Thanks@mikedidthis我可以,但我不明白为什么?使用会话并不是特定于该库的,而是它们如何解决从连接到回调点获取变量的问题。官方的自由党有一个实现我上面所做的事情的例子,但在我看来,它更多的是一个概念的证明。您需要手动输入数据才能接收访问令牌,我认为这在实际应用程序中并不有用。因为其他人可能会看到整个过程?不管怎样,很高兴您解决了这个问题,也为错误感到抱歉。没问题,谢谢您对Tumblr问题的帮助:)
session_start();

require_once('../vendor/autoload.php');

// some variables that will be pretttty useful
$consumerKey = 'xxx';
$consumerSecret = 'xxx';
$client = new Tumblr\API\Client($consumerKey, $consumerSecret, $_SESSION['request_token'], $_SESSION['request_token_secret']);
$requestHandler = $client->getRequestHandler();
$requestHandler->setBaseUrl('https://www.tumblr.com/');

unset($_SESSION['request_token']);
unset($_SESSION['request_token_secret']);

$link = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$verifier = $_GET['oauth_verifier'];

$resp = $requestHandler->request('POST', 'oauth/access_token', array('oauth_verifier' => $verifier));
$out = $result = $resp->body;
$data = array();
parse_str($out, $data);

echo '<pre>';
var_dump($data);
echo '</pre>';

// and print out our new keys
$token = $data['oauth_token'];
$secret = $data['oauth_token_secret'];
echo "\ntoken: " . $token . "\nsecret: " . $secret;

// and prove we're in the money
$client = new Tumblr\API\Client($consumerKey, $consumerSecret, $token, $secret);
$info = $client->getUserInfo();
echo "\ncongrats " . $info->user->name . "!\n";