據我所知,這個問題被問了很多次,但還沒有,我仍然無法與所有不同的解決方案解決了我的問題在那裏。的Twitter的OAuth:「無法驗證的OAuth簽名和令牌」使用PHP
我想利用這個PHP類:https://github.com/abraham/twitteroauth
我已經和我的代碼操作相當長的一段時間,我什麼也沒得到,除了這些錯誤:
Notice: Undefined index: oauth_token in C:\xampp\htdocs\mywebsite\components\SocialConnect\twitter\twitteroauth.php on line 80
Notice: Undefined index: oauth_token_secret in C:\xampp\htdocs\mywebsite\components\SocialConnect\twitter\twitteroauth.php on line 80
Array ([Failed to validate oauth signature and token] =>)
這是非常奇怪。我沒有看到任何我可以做錯的事情。這是我一直在寫的代碼:
include($mywebsite_root_path . 'components/SocialConnect/twitter/twitteroauth.php');
define('TWITTER_CONSUMER_KEY', '123');
define('TWITTER_CONSUMER_SECRET', 'abc');
define('TWITTER_OAUTH_CALLBACK', 'http://localhost/mywebsite/user/connect/twitter');
$oauth_token = request_var('oauth_token', '');
$stored_token = $user->get_data('oauth_token');
if (!empty($oauth_token))
{
if ($oauth_token != $stored_token)
{
$user->set_data('oauth_status', 'oldtoken');
$user->quit(false);
redirect('user/connect/' . $service);
}
unset ($twitter);
$secret_token = $user->get_data('oauth_token_secret');
$twitter = new TwitterOAuth(TWITTER_CONSUMER_KEY, TWITTER_CONSUMER_SECRET, $stored_token, $secret_token);
/* Request access tokens from twitter */
$oauth_verifier = request_var('oauth_verifier', '');
$access_token = $twitter->getAccessToken($oauth_verifier);
/* Save the access tokens. Normally these would be saved in a database for future use. */
$user->set_data('access_token', $access_token);
/* Remove no longer needed request tokens */
unset($oauth_token, $secret_token);
$user->set_data('oauth_token', '');
$user->set_data('oauth_token_secret', '');
if (200 == $twitter->http_code)
{
$user->set_data('status', 'verified');
// Register here
throw_msg("Welcome. Your account has been successfully connected with Twitter", true, null, 3, 'success');
}
else
{
$user->quit(false);
throw_msg('Could not log into your Twitter account. Please try again.', true);
}
}
else
{
$twitter = new TwitterOAuth(TWITTER_CONSUMER_KEY, TWITTER_CONSUMER_SECRET);
/* Get temporary credentials. */
$request_token = $twitter->getRequestToken(TWITTER_OAUTH_CALLBACK);
print_r($request_token); exit;
/* Save temporary credentials to session. */
$token = $request_token['oauth_token'];
$user->set_data('oauth_token', $token);
$user->set_data('oauth_token_secret', $request_token['oauth_token_secret']);
switch ($twitter->http_code)
{
case 200:
$url = $twitter->getAuthorizeURL($token);
redirect($url, 'instant', null, true);
break;
default:
throw_msg('Could not log into your Twitter account. Please try again.', true);
break;
}
}
因此,正如你所看到的,我試圖將我所有的代碼保存在一個頁面中。我上面顯示的錯誤來自以下行:$token = $request_token['oauth_token'];
。我已經退出了腳本權表示爲了整個錯誤print_r
前陣,並得到這個問題的真正原因,這是
無法驗證的OAuth簽名和令牌
我米堅持這一點,我不知道如何繼續。任何線索將不勝感激。
request_var()
相當於$_REQUEST
$user->get_data()
從$_SESSION
$user->set_data()
組數據中獲取數據到$_SESSION
$user->quit(false)
破壞了會議