日本PHPユーザ会 掲示板

日本PHPユーザ会運営の掲示板です。※ただいまテスト運用中です。

日本PHPユーザ会 掲示板 » PHP事はじめ » HTTP_OAuth_Cunsumerのセッション持ち越しについて

HTTP_OAuth_Cunsumerのセッション持ち越しについて

ページ: 1

投稿者 投稿
会員
登録者: 1 2011
返信数: 2
はじめまして!
基本的な事かもしれませんが、色々調べても分からなかったので助けてください!

現在、PEARのServices_Twitterを使って、TwitterAPIを使いたいと思っています。
2つのphpファイルを作り以下の流れでページ遷移していきたいと考えています

①(自作phpページ)認証用URLの取得
②(Twitter認証ページ)ユーザが許可ボタンを押す
③(自作phpページ)アクセストークン取得、API利用

ここで、①から③へセッション変数を使ってデータを渡しているのですが、一部のデータだけが上手く渡せません。

①のphpファイルは以下の内容になっています。
------------------------------------------------------------------①ここから
<?php
session_start();

$consumer_key = 'xxxxxxxxxxxxxxxxxxx'; //[取得した Consumer key]
$consumer_secret = 'xxxxxxxxxxxxxxx'; //[取得した Consumer secret]
include 'HTTP/OAuth/Consumer.php';
$_SESSION['consumer'] = new HTTP_OAuth_Consumer($consumer_key, $consumer_secret);

$http_request = new HTTP_Request2();
$http_request->setConfig('ssl_verify_peer', false);
$consumer_request = new HTTP_OAuth_Consumer_Request;
$consumer_request->accept($http_request);
$_SESSION['consumer']->accept($consumer_request);

// リクエストトークン を取得
$callback = 'aaaaaaaaaaaaa.html'; //[Twitter に登録した Callback URL]
$_SESSION['consumer']->getRequestToken('https://twitter.com/oauth/request_token', $callback);

$_SESSION['request_token'] = $_SESSION['consumer']->getToken();
$_SESSION['request_token_secret'] = $_SESSION['consumer']->getTokenSecret();

// 認証用 URL を取得
$auth_url = $_SESSION['consumer']->getAuthorizeUrl('https://twitter.com/oauth/authenticate');

print $auth_url;
?>
------------------------------------------------------------------①ここまで

この後、$auth_urlへ画面遷移して、Twitterの認証を経て、その後以下のphpへアクセスします。

------------------------------------------------------------------②ここから
<?php
session_start();

// アクセストークンを取得する
$verifier = $_GET['oauth_verifier'];
$_SESSION['consumer']->setToken($_SESSION['request_token']);
・・・
------------------------------------------------------------------②ここまで



このとき、$_SESSION['request_token']にはデータが入っている事が確認できたのですが、$_SESSION['consumer']はダメらしく、以下のメッセージが表示されてしまいます。


The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition HTTP_OAuth_Consumer of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition in <b>/home/users/0/daa.jp-polig/web/tw_get2.php</b> on line <b>14</b><br />
会員
登録者: 8 2009
返信数: 103
こんばんは、

”セッション変数において参照を使用することはできません。”とマニュアルにありますね。
会員
登録者: 1 2011
返信数: 2
nulla様
返信ありがとうございます。
すみません、良く理解できていないんですが、参照とはincludeとかrequire_onceの事でしょうか、それともnew でインスタンス化した変数の事でしょうか・・・??


何れにしましても、とりあえず一応、その後自己解決できましたので報告致します。
基本的には、require_one、include、session_startを記述する順番に問題がありました。

①のphpでは、最初に
<?php
include 'HTTP/OAuth/Consumer.php';
session_start();

と書いてから、続けて処理の箇所を続けて記述、②でも同様に最初に
<php?
require_once 'Services/Twitter.php';
include 'HTTP/OAuth/Consumer.php';
session_start();

と記述してから処理を書いたところ、ちゃんと動作させる事ができました!
session_startの後に、includeを書いてもダメだし、session_startの前にnew HTTP_OAth...を書いてもダメみたいです。
会員
登録者: 8 2009
返信数: 103
こんにちは。
原因は記述の順番でしたか。
間違った情報を書き込んでしまい済みませんでした。

ページ: 1

日本PHPユーザ会 掲示板 » PHP事はじめ » HTTP_OAuth_Cunsumerのセッション持ち越しについて

日本PHPユーザ会 掲示板 は UseBB 1 フォーラムソフトウェア を使用しています