Php 保存oauth数据&从数据库(twitter)使用它

Php 保存oauth数据&从数据库(twitter)使用它,php,twitter,oauth,laravel,Php,Twitter,Oauth,Laravel,我正在开发一项社会管理服务,在开发过程中,我还学习了许多技术。以下是我要写的: 用户必须使用其twitter帐户进行身份验证 然后,在mysql中保存这些参数:oauth_令牌、oauth_验证器和oauth_秘密 在另一个文件中,我从数据库中请求这三个参数,并在代码中使用它。 问题是,当用户从我的站点(而不是Twitter)注销,然后再次登录时,我在函数getAccessToken中得到以下错误: 未定义索引:第127行twitter/twitteroauth.php中的oauth_标记 我不

我正在开发一项社会管理服务,在开发过程中,我还学习了许多技术。以下是我要写的:

用户必须使用其twitter帐户进行身份验证 然后,在mysql中保存这些参数:oauth_令牌、oauth_验证器和oauth_秘密 在另一个文件中,我从数据库中请求这三个参数,并在代码中使用它。 问题是,当用户从我的站点(而不是Twitter)注销,然后再次登录时,我在函数getAccessToken中得到以下错误:

未定义索引:第127行twitter/twitteroauth.php中的oauth_标记

我不知道为什么?我使用的是Abraham的lib和Laravel框架

以下是我登录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详细信息等的主要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

我希望你能理解我的英语不好,我的代码。如果您有什么问题,请询问,我会尽量解释得更清楚。

猜测:

如果用户注销,您可能会删除cookie:

$username = Cookie::get('username');
然后,您的数据库查找:

$oauthtoken = DB::table('twitter')->where('username', '=', Cookie::get('username'))->only('oauth_token');
…不会返回任何内容,因此$oauthtoken不包含数据

如果不是这样,请编辑你的帖子:127是哪一行?你的注销脚本在做什么