【发布时间】:2011-02-03 19:40:46
【问题描述】:
我希望有人能够回答。我已经为此工作了好几个小时,但找不到解决方案。我还一遍又一遍地研究了 HTTP_OAUTH documentation 以及一些教程。我坚持使用它,因为我的主机不支持正常的 OAuth。除此之外,还不错。这是我到目前为止所拥有的。我能够:
- 获取访问令牌 (URL_PATH_GOES_HERE?oauth_token=XXXXXXXXXXXXX)
- 重定向用户以获得他们的权限
- 使用访问令牌和 oauth_verifier 重定向回我的回调 URL(URL_PATH_GOES_HERE?oauth_token=XXXXXXXXXXXXX?oauth_verifier=XXXXXXXXXX)
但是,当我到达那里时,我在请求访问令牌时遇到了困难,因此我可以从那里代表用户提出请求。
我不断收到错误:
没有令牌或令牌_secret
有什么想法吗?我将永远感激不尽!!
##############################
## FILNENAME: msconfig.php ###
##############################
<?php
define('OAUTH_CONSUMER_KEY',CONSUMER KEY GOES HERE);
define('OAUTH_CONSUMER_SECRET',CONSUMER SECRET GOES HERE);
define('OAUTH_REQUEST_TOKEN_API', 'http://gomiso.com/oauth/request_token');
define('OAUTH_AUTHORIZE_API', 'http://gomiso.com/oauth/authorize');
define('OAUTH_ACCESS_TOKEN_API', 'http://gomiso.com/oauth/access_token');
define('CALLBACK_URL', 'URL_PATH_GOES_HERE/callback.php');
define('MISO_USER_AGENT', 'youruseragent');
?>
###############################
### FILNENAME: index.php ######
###############################
<?php
//##########################################################################
// START A SESSION SO WE CAN SHARE VARIABLES WITH OUR CALLBACK HANDLER #####
//##########################################################################
session_start();
//############################
// IMPORT CONFIGURATION FLE ##
//############################
require_once("misoconfig.php");
//##########################
//#IMPORT EXTERNAL CLASSES #
//##########################
require_once("HTTP/OAuth/Consumer.php");
//########################
//# FETCH REQUEST TOKEN ##
//########################
try {
$consumer = new HTTP_OAuth_Consumer(OAUTH_CONSUMER_KEY, OAUTH_CONSUMER_SECRET);
$consumer->getRequestToken(OAUTH_REQUEST_TOKEN_API,CALLBACK_URL);
$_SESSION['request_token'] = $consumer->getToken();
}catch (Exception $e) {
echo 'Fetching Request Token Exception: ', $e->getMessage(), "\n";
}
//#############################################
// REDIRECT THE USER TO THE AUTHORIZATION URL #
//#############################################
try {
$url = $consumer->getAuthorizeUrl(OAUTH_AUTHORIZE_API);
header("Location: $url");
}catch (Exception $e) {
echo 'Authorization URL Redirection Exception: ', $e->getMessage(), "\n";
}
?>
##############################
## FILNENAME: callback.php ###
##############################
<?php
// START A SESSION SO WE CAN ACCESS VARIABLES SHARED WITH US BY INDEX.PHP
session_start();
// IMPORT CONFIGURATION FLE
require_once("misoconfig.php");
// IMPORT EXTERNAL CLASSES
require_once("HTTP/OAuth/Consumer.php");
// Store these tokens (at least for now)
$_SESSION['oauth_verifier'] = $_GET['oauth_verifier'];
// BY REACHING THIS FAR, WE'VE BEEN AUTHENTICATED. LET'S GRAB THE ACCESS TOKEN AND SECRET AND SAVE THEM <SOMEWHRE>.
try {
$consumer = new HTTP_OAuth_Consumer($_SESSION['request_token'], $_SESSION['oauth_verifier']);
$consumer->getAccessToken(OAUTH_ACCESS_TOKEN_API,$_SESSION['oauth_verifier'],array(),'GET');
}catch (Exception $e) {
echo 'Access Token Exception: ', $e->getMessage(), "\n";
}
?>
【问题讨论】:
-
我冒昧地编辑了你的标题,因为 on 提议不是很能描述问题而且太笼统,请随意以任何你喜欢的方式改进我的版本,但我建议标题为尽可能具体。
-
@Trufa:非常感谢!实际上看起来好多了!
-
没问题,虽然不知道你的问题,但祝你好运!
-
哈哈,真烦人。 OAuth 基本上有三个步骤,我在最后一个步骤,我无法让它工作!啊!!