2

OAuth を使用してユーザーを認証し、ユーザー データを取得しようとしています。ユーザーが Twitter にサインインしていない場合、認証が機能し、ユーザーの詳細を取得できます。しかし、ユーザーがすでに Twitter にサインインしている場合、「403 Forbidden: サーバーは要求を理解しましたが、処理を拒否しています」というエラー メッセージが表示されます。. 一部の投稿では、http ではなく https を介してすべてのリクエストを行うように述べています。私がしたこと。「http://net.tutsplus.com/tutorials/php/how-to-authenticate-users-with-twitter-oauth/」から認証用のコードをダウンロードしました。助けてください。

$twitterOauthObj    =   new TwitterOAuth($oauth_consumer_key, $oauth_consumer_secret);
if(!isset($_GET['oauth_token'])){

    $requestTokenArray  =   $twitterOauthObj->getRequestToken($callback_url);
    $requestToken       =   $requestTokenArray['oauth_token'];
    $tokenSecret        =   $requestTokenArray['oauth_token_secret'];

    $authorizeUrl       =   $twitterOauthObj->getAuthorizeURL($requestToken);
    $response       =   $twitterOauthObj->oAuthRequest($authorizeUrl, 'GET', $requestTokenArray);
    print_r($response);
} else{

    $oauthToken     =   $_GET['oauth_token'];
    $requestToken       =   $oauthToken;
    $oauthVerifier      =   $_GET['oauth_verifier'];
    $accessTokenArray   =   $twitterOauthObj->getAccessToken($oauthVerifier, $oauthToken);
        $oauthToken     =   $accessTokenArray['oauth_token'];
    $oauthTokenSecret   =   $accessTokenArray['oauth_token_secret'];
    $userTwitterId      =   $accessTokenArray['user_id'];
    $screenName     =   $accessTokenArray['screen_name'];
 }
4

1 に答える 1

3

Ok。私はそれを働かせました。URLを正しく承認するためにリダイレクトしていませんでした。これが変更されたコードです。

if(!isset($_GET['oauth_token'])){

    $requestToken   =   $twitterOauthObj->getRequestToken();
    $_SESSION["oauth_token"] = $requestToken["oauth_token"];
    $_SESSION["oauth_token_secret"] = $requestToken["oauth_token_secret"];

    header("Location:".$twitterOauthObj->getAuthorizeURL($requestToken["oauth_token"]));

}

皆さんの貴重な提案に感謝します。心から感謝する!!

于 2012-08-09T14:06:13.363 に答える