Twitter OAuth错误220

时间:2014-05-30 07:56:43

标签: php twitter oauth

我有一个应用程序使用OAuth对用户进行身份验证,并获得为Twitter用户发布更新所需的所有权限,但是当我尝试实际发布帖子时,我得到了此回复:

  

stdClass Object ( [errors] => Array ( [0] => stdClass Object ( [code] => 220 [message] => Your credentials do not allow access to this resource. ) ) )

这是我第一次链接twitter时的身份验证代码:

// The TwitterOAuth instance
$twitteroauth = new TwitterOAuth(TWITTER_KEY, TWITTER_SECRET);
// Requesting authentication tokens, the parameter is the URL we will be redirected to
$request_token = $twitteroauth->getRequestToken(TWITTER_CALLBACK_URL);

// Saving them into the session
$_SESSION['twitter_oauth_token'] = $request_token['oauth_token'];
$_SESSION['twitter_oauth_token_secret'] = $request_token['oauth_token_secret'];

// If everything goes well..
if($twitteroauth->http_code==200){
    // Let's generate the URL and redirect
    $url = $twitteroauth->getAuthorizeURL($request_token['oauth_token']);
    header('Location: '. $url);
} else {
    // Remember to adds script for error handling and reporting but for now kill the script
    die('Something wrong happened.');
}

以下是他们进入回调时发生的事情:

        if(!empty($_GET['oauth_verifier']) && !empty($_SESSION['twitter_oauth_token']) && !empty($_SESSION['twitter_oauth_token_secret'])){
            // TwitterOAuth instance, with two new parameters we got in twitter_login.php
            $twitteroauth = new TwitterOAuth(TWITTER_KEY, TWITTER_SECRET, $_SESSION['twitter_oauth_token'], $_SESSION['twitter_oauth_token_secret']);
            // Let's request the access token
            $access_token = $twitteroauth->getAccessToken($_GET['oauth_verifier']);
            // Save it in a session var
            $_SESSION['access_token'] = $access_token;
            // Let's get the user's info
            $user_info = $twitteroauth->get('account/verify_credentials');

            if(isset($user_info->error)){
                // Something's wrong, go back to square 1
                header('Location: networks.php?connect=2');
            } else {
                // Let's find the user by its ID
                $query = mysql_query("SELECT * FROM connected_accounts WHERE oauth_provider = 'twitter' AND oauth_uid = ". $user_info->id);
                $result = mysql_fetch_array($query);

                // If not, let's add it to the database
                if(empty($result)){
                    $query = mysql_query("INSERT INTO connected_accounts (user_id, account_id, oauth_provider, acct_usr_id, oauth_uid, username, token, secret) VALUES ('".${'User'}['id']."', '2', 'twitter', ".$user_info->id.", ".$user_info->id.", '".$user_info->screen_name."', '".$access_token['oauth_token']."', '".$access_token['oauth_token_secret']."')");
                    $query = mysql_query("SELECT * FROM connected_accounts WHERE id = " . mysql_insert_id());
                    $result = mysql_fetch_array($query);
                } else {
                    // Update the tokens
                    $query = mysql_query("UPDATE connected_accounts SET token = '".$access_token['oauth_token']."', secret = '".$access_token['oauth_token_secret']."' WHERE oauth_provider = 'twitter' AND oauth_uid = ".$user_info->id);
                }

                $_SESSION['id'] = $result['id'];
                $_SESSION['username'] = $result['username'];
                $_SESSION['oauth_uid'] = $result['oauth_uid'];
                $_SESSION['oauth_provider'] = $result['oauth_provider'];
                $_SESSION['oauth_token'] = $result['token'];
                $_SESSION['oauth_secret'] = $result['secret'];

                header('Location: manage_accounts.php');
            }
        } else {
            // Something's missing, go back to square 1
            header('Location: networks.php?connect=2');
        }



        // Get our permenant token
        $response = $twitter_client->getAccessToken($_GET['oauth_verifier']);

        // If we did not receive a permenant token, notify the user
        if (!$response['oauth_token']) {
            $message = '<center><div class="error">An error occurred while linking your Twitter account. Please try again later.</div></center>';

        // Otherwise
        } else {

            // Update our info
            mysql_query('UPDATE `connected_accounts` SET `token` = "'.$response['oauth_token'].'", `acct_usr_id` = "'.$response['user_id'].'", `secret` = "'.$response['oauth_token_secret'].'" WHERE `account_id` = 2 AND `user_id` = '.${'User'}['id']) or die(mysql_error());

            // Send the user to the post page
            header('Location: manage_accounts.php'); exit;

        }

我正在使用https://github.com/abraham/twitteroauth

中的图书馆

过去一切工作都很好,但现在它还没有工作。

它似乎与仅应用程序身份验证有关,但我使用OAuth,它应该允许发布到状态/更新

0 个答案:

没有答案