質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Twitter

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

PHP

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

Q&A

解決済

1回答

3116閲覧

Twitter API セッションが一致しない PHP

dalian

総合スコア26

Twitter

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

PHP

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

0グッド

0クリップ

投稿2015/04/15 08:35

編集2015/04/15 08:42

login.phpでセッションに入れたトークンとtwitter認証後のトークンと(callback.php)一致しません。
なのでErrorとなります。
いい解決方法はありませんか?
ログインできる場合もあります。
調べてみるとlogin.phpのセッションがcallback.phpを開いた時には消えてしまっています。
これはなぜなんでしょうか?
login.php

lang

1<?php 2 3session_start(); 4 5require_once 'common.php'; 6require_once 'twitteroauth/autoload.php'; 7 8use Abraham\TwitterOAuth\TwitterOAuth; 9 10//TwitterOAuth をインスタンス化 11$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET); 12 13//コールバックURLをここでセット 14$request_token = $connection->oauth('oauth/request_token', array('oauth_callback' => OAUTH_CALLBACK)); 15 16$_SESSION = array(); 17session_destroy(); 18//session更新 19session_regenerate_id(); 20 21//callback.phpで使うのでセッションに入れる 22$_SESSION['oauth_token'] = $request_token['oauth_token']; 23$_SESSION['oauth_token_secret'] = $request_token['oauth_token_secret']; 24 25//Twitter.com 上の認証画面のURLを取得 26$url = $connection->url('oauth/authorize', array('oauth_token' => $request_token['oauth_token'])); 27 28//Twitter.com の認証画面へリダイレクト 29header( 'location: '. $url ); 30?>

callback.php

lang

1<?php 2 3session_start(); 4 5require_once 'common.php'; 6require_once 'twitteroauth/autoload.php'; 7 8use Abraham\TwitterOAuth\TwitterOAuth; 9 10//login.phpでセットしたセッション 11$request_token = []; 12$request_token['oauth_token'] = $_SESSION['oauth_token']; 13$request_token['oauth_token_secret'] = $_SESSION['oauth_token_secret']; 14 15//TwitterからのOAuthトークンとlogin.phpのセッション上のものと一致するかをチェッ>ク 16if ($request_token['oauth_token'] !== $_REQUEST['oauth_token']) { 17 die( 'Error! ' ); 18}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

login.php ⇒ callback.php

という処理の流れであるのであれば、
callback.php側のsession_start();
が邪魔していると思うのですが。
別のキーを持ったsessionが発行されるような。。。

投稿2015/04/15 09:20

ShintaroIshida

総合スコア87

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dalian

2015/04/15 09:36

どうやら違うみたいですね。 login.php→twitter認証→callback.phpになるので認証あたりが怪しいですね
ShintaroIshida

2015/04/15 10:34

であれば、login.phpのlocation前までセッションが保持されていることは担保とれていますか? session_id() で、取れると思うので確認するとよいと思います。 意図せずに書きかわっていると思うので、gcのタイミングやlifetimeの設定を見直してみればいかがでしょうか?
dalian

2015/04/16 13:48

lifetimeの設定を変更しsession idの更新などで解決しました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問