5

私はtwitter認証に取り組んでいます。 getAccessTokenwhich が返されるまで、すべてがうまくいくようArray ( [ ] => )です。

私がやった事:

  1. 第1段階:

    $connection = new TwitterOAuth('xxxxxxxx','xxxxxxxx');
    
    $temporary_credentials = $connection->getRequestToken('http://example.com/profile.php?passurl=1');
    
    $redirect_url = $connection->getAuthorizeURL($temporary_credentials);
    
    $_COOKIE['oauth_token'] = $temporary_credentials['oauth_token'];
    
    $_COOKIE['oauth_token_secret'] = $temporary_credentials['oauth_token_secret'];
    
    header("Location: $redirect_url");
    
  2. 第 2 段階 (ここで問題が発生します)

    $connection =
            new TwitterOAuth(
                    'xxxxxxxxxx',
                    'xxxxxxxxxx',
                    $_COOKIE['oauth_token'],
                    $_COOKIE['oauth_token_secret']
                    ); 
    $token_credentials = $connection->getAccessToken();
    

データベースに値を保存するつもりです$token_credentialsが、空の配列が返されます:Array ( [ ] => )

私は何が正しくないのですか?

4

3 に答える 3

3

「oauth_verifier」を getAccessToken メソッドに渡していますか? あなたが与えているサンプルコードでは、あなたはそれをしていません。この図、特にパート D を見てください。

OAuth ダイアグラム

過去に twitteroauth を使用したことがありますが、このようにしたことを覚えています。(2 番目のフェーズを開始)

$twitterOauth = new TwitterOAuth($AppId, $twSecret, $_COOKIE['oauth_token'], $_COOKIE['oauth_token_secret']);
$twToken = $twitterOauth->getAccessToken($_REQUEST['oauth_verifier']);

$newTwitterOauth = new TwitterOAuth($AppId,  $twSecret, $twToken['oauth_token'], $twToken['oauth_token_secret']);
$response  = (array) $newTwitterOauth->get('account/verify_credentials');
var_dump($response);

ただし、いくつかの提案があります。

于 2012-05-05T19:16:35.453 に答える
0

なぜクッキーを使用しているのですか?Cookie を使用すると、クライアント側に保存されるため潜在的なリスクがあります。代わりに SESSION を使用してください

別の質問:もしあなたがともう一つ$redirect_urlを作ったら、r は空ですか?print_r$_COOKIE['oauth_token']

いくつかのアドオン (Firefox の webdeveloper など) またはブラウザーの構成で Cookie を無効にすると、私はこれを求めます。$_COOKIE['oauth_token']、および で空の値を使用している可能性があり$_COOKIE['oauth_token_secret']ます。

于 2012-05-03T17:53:27.223 に答える
0

TwitterOAuth クラスはどこから取得していますか? スタンダードクラスですか?それとも自分で書いた?クラス自体をデバッグして、クラス関数に詳細な出力を入れてみます。

于 2012-04-27T18:35:59.543 に答える