1
我正在開發社交管理服務,在開發過程中,我也學習了許多技術。這是我必須寫:保存oauth數據並從數據庫中使用它(推特)
- 用戶與他們的Twitter帳戶
- 之後進行身份驗證,在mysql中,我已把這些參數:
oauth_token
,oauth_verifier
和oauth_secret
- 在另一個文件我m從數據庫請求這三個參數,並在我的代碼中使用它。
問題是,當用戶從我的網站登出(不是來自Twitter)和比再次登錄我在功能getAccessToken
得到這個錯誤:
「未定義指數:組oauth_token」在嘰嘰喳喳/ twitteroauth.php on line 127
我不知道爲什麼?我正在使用Abraham's lib
和Laravel Framework
。
這裏是我的代碼登錄Twitter上:
<?php
class Twitter_Controller extends OneAuth\Auth\Controller
{
function action_index()
{
// The TwitterOAuth instance
$twitteroauth = new TwitterOAuth('ABCD', 'EFGH');
// Requesting authentication tokens, the parameter is the URL we will be redirected to
$request_token = $twitteroauth->getRequestToken('http://someurl.com/members');
// Saving them into the session
$username = Cookie::get('username');
DB::table('twitter')->where('username', '=', $username)->update(array('oauth_token'=>$request_token['oauth_token'],
'oauth_secret'=>$request_token['oauth_token_secret']));
//Cookie::put('oauth_token') = $request_token['oauth_token'];
//Cookie::put('oauth_token_secret') = $request_token['oauth_token_secret'];
// If everything goes well..
if($twitteroauth->http_code==200){
$oauthtoken = DB::table('twitter')->where('username', '=', Cookie::get('username'))->only('oauth_token');
$url = $twitteroauth->getAuthorizeURL($oauthtoken);
header('Location: '. $url);
} else {
// It's a bad idea to kill the script, but we've got to know when there's an error.
die('Something wrong happened.');
}
}
}
這裏是 「主」 嘰嘰喳喳文件(用於顯示Twitter的信息等)
<?php
$oauthtoken = DB::table('twitter')->where('username', '=', Cookie::get('username'))->only('oauth_token');
$haveTwitter = DB::table('user')->where('username', '=', Cookie::get('username'))->only('have_tw');
$oauthsecret = DB::table('twitter')->where('username', '=', Cookie::get('username'))->only('oauth_secret');
$twitteroauth = new TwitterOAuth('ABCD', 'EFGH',
$oauthtoken, $oauthsecret);
echo $haveTwitter;
if($haveTwitter == '0')
{
$access_token=$twitteroauth->getAccessToken(Input::get('oauth_verifier'));
DB::table('twitter')->where('username', '=', Cookie::get('username'))->update(array('oauth_verifier' => Input::get('oauth_verifier')));
DB::table('user')->where('username', '=', Cookie::get('username'))->update(array('have_tw' => '1'));
}
if($haveTwitter == '1')
{
$oauth_verifier = DB::table('twitter')->where('username', '=', Cookie::get('username'))->only('oauth_verifier');
echo $oauth_verifier;
$access_token=$twitteroauth->getAccessToken($oauth_verifier);
}
$user_info = $twitteroauth->get('account/verify_credentials');
dd($user_info);
?>
可變$haveTwitter
是說,如果這是用戶第一次在Twitter上登錄,或者他之前登錄過Twitter。
我希望你能理解我(我的英語不好)和我的代碼。如果你有問題,請問,我會盡力解釋。