2013-03-17 36 views
1

我正在開發社交管理服務,在開發過程中,我也學習了許多技術。這是我必須寫:保存oauth數據並從數據庫中使用它(推特)

  1. 用戶與他們的Twitter帳戶
  2. 之後進行身份驗證,在mysql中,我已把這些參數:oauth_tokenoauth_verifieroauth_secret
  3. 在另一個文件我m從數據庫請求這三個參數,並在我的代碼中使用它。

問題是,當用戶從我的網站登出(不是來自Twitter)和比再次登錄我在功能getAccessToken得到這個錯誤:

「未定義指數:組oauth_token」在嘰嘰喳喳/ twitteroauth.php on line 127

我不知道爲什麼?我正在使用Abraham's libLaravel 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。

我希望你能理解我(我的英語不好)和我的代碼。如果你有問題,請問,我會盡力解釋。

回答

0

猜測:

如果用戶註銷時,你可能刪除cookie:

$username = Cookie::get('username'); 

然後,你的數據庫查詢:

$oauthtoken = DB::table('twitter')->where('username', '=', Cookie::get('username'))->only('oauth_token'); 

..won't返回任何東西,所以你的$ oauthtoken將不包含數據。

如果情況並非如此,請編輯您的文章:127是什麼行?什麼是您的註銷腳本在做什麼?

相關問題