質問編集履歴

1 問題点の追加

dalian

dalian score 32

2015/04/15 17:42  投稿

Twitter API セッションが一致しない PHP
login.phpでセッションに入れたトークンとtwitter認証後のトークンと(callback.php)一致しません。
なのでErrorとなります。
いい解決方法はありませんか?
ログインできる場合もあります。
調べてみるとlogin.phpのセッションがcallback.phpを開いた時には消えてしまっています。  
これはなぜなんでしょうか?  
login.php
```lang-<PHP>
<?php
session_start();
require_once 'common.php';
require_once 'twitteroauth/autoload.php';
use AbrahamTwitterOAuthTwitterOAuth;
//TwitterOAuth をインスタンス化
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET);
//コールバックURLをここでセット
$request_token = $connection->oauth('oauth/request_token', array('oauth_callback' => OAUTH_CALLBACK));
$_SESSION = array();
session_destroy();
//session更新
session_regenerate_id();
//callback.phpで使うのでセッションに入れる
$_SESSION['oauth_token'] = $request_token['oauth_token'];
$_SESSION['oauth_token_secret'] = $request_token['oauth_token_secret'];
//Twitter.com 上の認証画面のURLを取得
$url = $connection->url('oauth/authorize', array('oauth_token' => $request_token['oauth_token']));
//Twitter.com の認証画面へリダイレクト
header( 'location: '. $url );
?>
```
callback.php
```lang-<PHP>
<?php
session_start();
require_once 'common.php';
require_once 'twitteroauth/autoload.php';
use AbrahamTwitterOAuthTwitterOAuth;
//login.phpでセットしたセッション
$request_token = [];
$request_token['oauth_token'] = $_SESSION['oauth_token'];
$request_token['oauth_token_secret'] = $_SESSION['oauth_token_secret'];
//TwitterからのOAuthトークンとlogin.phpのセッション上のものと一致するかをチェッ>ク
if ($request_token['oauth_token'] !== $_REQUEST['oauth_token']) {
die( 'Error! ' );
}
```
  • PHP

    26549 questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • Twitter

    898 questions

    Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る