Facebook PHP SDK でエラーコード2500、"OAuthException: An active access token must be used to query information about the current user"というエラーが発生します。


1度目の認証では成功するのですが、2度目認証を取り消して再度認証するなどの場合発生してしまいます。
$fb->api('/me');
と呼び出した場合に発生します。
どなたか教えていただけないでしょうか。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2012/07/16 23:55:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:standard_one No.1

回答回数252ベストアンサー獲得回数23

ポイント100pt

状況がわかりにくいので確認しますが、一度目は動く(認証が通り、/meの情報が取得できている)のですね?
それと認証を取り消すというのはFacebookにログインしてアプリを削除しているということでいいですか?
一度目も二度目もSDKが生成するログインURLに飛ばしているんですよね?
また、一度目と二度目の間に友達を増やしたりはしていないですよね?
それと、一度目と二度目というのはどういう区切りですか?プログラムを2回実行するという意味でいいですか?プログラムの実行は1回で、その途中で認証を取り消している意味ではないですよね?

PHP-SDKはセッションにFacebookの情報を保存するはずなので、連携後にprint_r($_SESSION);でアクセストークンを見ることができますので一度目の連携後と二度目の連携後でそれぞれ確認してください。
また、二度目の連携前にセッションをunsetしてから二度目の連携を実行してセッション情報に何か変化がないか確認してください。

他2件のコメントを見る
id:taku-woohar

fb_*の値を全て消してみましたがどうも変わらないようです。

SESSIONを追ってみた結果ですが、getAccessToken()を呼び出すとSESSIONに値が格納されるようでした。

正常時の場合ですと、アプリに戻った時に
fb_[アプリID]_code、fb_[アプリID]_access_tokenに長い文字列が格納されます。
失敗の時にはfb_[アプリID]_code、fb_[アプリID]_access_tokenには何も格納されずgetAccessToken()の値が「アプリID|アプリシークレット」という値がわたってきます。

どうぞよろしくお願いします。

2012/07/11 18:11:39
id:standard_one

躓いているのは7ではなく6だと思われるのですが、シークレットモードでない場合のシーケンスと挙動を調べてみたらどうでしょうか?
コメントでテストフローの全シーケンスを書こうとすると行数的に厳しいから端折って書いておられるのであれば複数のコメントを使うなり、別ページで詳細(できればソースも)を説明してそこのURLを貼るなりした方が解決は早いと思います。
少なくとも上であげられているテストフローはざっくりしすぎで、これ以上は回答の付けようがありません。

2012/07/12 16:19:07

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません