好吧,我正在嘗試使用Twitter API做一個非常簡單的登錄腳本。我需要的只是讓用戶通過Twitter登錄網站的一種簡單方法。如果他們目前沒有登錄,我的主頁上有一個按鈕,顯示「登錄或註冊Twitter」。如果他們已登錄,我希望它顯示他們的用戶名和他們的頭像。所以這是我到目前爲止,並沒有工作。使用Twitter OAuth登錄Twitter的問題(PHP)
在主頁上(的index.php),我有以下幾點:
<?php
require_once 'lib/twitteroauth/OAuth.php';
require_once 'lib/twitteroauth/twitteroauth.php';
require_once 'config/config.php';
session_start();
?>
config.php文件包含以下代碼(消費者鍵&消費者的祕密顯然替換):
<?php
$consumer_key = 'consumer key';
$consumer_secret = 'consumer secret';
?>
然後在頁面後面,我還會看到以下內容,其中顯示登錄/註冊消息或用戶名/頭像,具體取決於他們的登錄狀態。
<?php
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 "<img src='".$user->profile_image_url."'/>";
} else {
echo "<a href='twitter_login.php'>Sign In/Register With Twitter</a>";
echo "<img src='images/twitter-banner.png'/>";
}
?>
這就是index.php頁面。正如你所看到的,如果他們沒有登錄,並且他們點擊「登錄」鏈接,它將把他們帶到另一個頁面,即twitter_login.php。該文件的內容如下:
<?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」。該文件的內容是:
<?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授權中。任何想法我做錯了什麼,或者我能做些什麼來改進/修復這個腳本?我正在努力解決這個問題。
預先感謝您!
凹凸?任何人? Bueller? Bueller? –