好吧,我正在尝试使用Twitter API做一个非常简单的登录脚本。我需要的只是让用户通过Twitter登录网站的一种简单方法。如果他们目前没有登录,我的主页上有一个按钮,显示“登录或注册Twitter”。如果他们已登录,我希望它显示他们的用户名和他们的头像。所以这是我到目前为止,并没有工作。
在主页(index.php)上,我有以下内容:
require_once 'lib/twitteroauth/OAuth.php';
require_once 'lib/twitteroauth/twitteroauth.php';
require_once 'config/config.php';
session_start();
?>config.php包含以下代码(消费者密钥和消费者密码显然已被替换):
$consumer_key = 'consumer key';
$consumer_secret = 'consumer secret';
?>然后在页面后面,我还会看到以下内容,其中显示登录/注册消息或用户名/头像,具体取决于他们的登录状态。
if (!empty($_SESSION['request_token']) && !empty($_SESSION['request_token_secret'])) {
$twitterOAuth = new TwitterOAuth($consumer_key, $consumer_secret, $_SESSION['request_token'], $_SESSION['request_token_secret']);
$user = $twitterOAuth->get('account/verify_credentials');
echo "Welcome ".$user->screen_name;
echo "";
} else {
echo "Sign In / Register With Twitter";
echo "
";
}
?>那就是index.php页面。正如你所看到的,如果他们没有登录,并且他们点击“登录”链接,它将把他们带到另一个页面,即twitter_login.php。该文件的内容如下:
require_once 'lib/twitteroauth/OAuth.php';
require_once 'lib/twitteroauth/twitteroauth.php';
require_once 'config/config.php';
session_start();
$twitterOAuth = new TwitterOAuth($consumer_key, $consumer_secret);
$requestToken = $twitterOAuth->getRequestToken();
$_SESSION['request_token'] = $requestToken['oauth_token'];
$_SESSION['request_token_secret'] = $requestToken['oauth_token_secret'];
header ('Location: '.$twitterOAuth->getAuthorizeURL($requestToken));
?>此页面将自动将用户重定向到Twitters授权URL。在twitter中设置的回调URL是“authenticate.php”。该文件的内容是:
require_once 'lib/twitteroauth/OAuth.php';
require_once 'lib/twitteroauth/twitteroauth.php';
require_once 'config/config.php';
session_start();
if ($_SESSION['request_token'] == $_GET['oauth_token']) {
$twitterOAuth = new TwitterOAuth($consumer_key, $consumer_secret, $_SESSION['request_token'], $_SESSION['request_token_secret']);
$accessToken = $twitterOAuth->getAccessToken();
if (isset($accessToken['user_id']) && is_numeric($accessToken['user_id'])) {
$_SESSION['request_token'] = $accessToken['oauth_token'];
$_SESSION['request_token_secret'] = $accessToken['oauth_token_secret'];
header('Location: index.php');
} else {
echo "Something went wrong.";
}
} else {
echo "OAuth Tokens Do Not Match.";
}
?>一旦登录成功,用户应该被重定向回index.php,然后主页应该显示他们的用户名/头像。在我自己的测试中,我发现它在Firefox中尝试时效果很好,但当我在任何其他浏览器(Safari / Chrome)中尝试它时,它似乎都停留在Twitter授权中。任何想法我做错了什么,或者我能做些什么来改进/修复这个脚本?我正在努力解决这个问题。
先谢谢你!















