php – Tumblr OAuth – 缺少或无效的请求令牌
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – Tumblr OAuth – 缺少或无效的请求令牌,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4274字,纯文字阅读大概需要7分钟。
内容图文
![php – Tumblr OAuth – 缺少或无效的请求令牌](/upload/InfoBanner/zyjiaocheng/725/29d491a10db349089df0ca072f8d4130.jpg)
通过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";
倾销$data给我这个:
array(1) {
["Missing_or_invalid_request_token_"]=>
string(0) ""
}
我错过了什么?
不确定它是否重要,但作为未来努力的参考,我的初始connect.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/');
// 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);
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);
$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();
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";
内容总结
以上是互联网集市为您收集整理的php – Tumblr OAuth – 缺少或无效的请求令牌全部内容,希望文章能够帮你解决php – Tumblr OAuth – 缺少或无效的请求令牌所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。