1度目の認証では成功するのですが、2度目認証を取り消して再度認証するなどの場合発生してしまいます。
$fb->api('/me');
と呼び出した場合に発生します。
どなたか教えていただけないでしょうか。
状況がわかりにくいので確認しますが、一度目は動く(認証が通り、/meの情報が取得できている)のですね?
それと認証を取り消すというのはFacebookにログインしてアプリを削除しているということでいいですか?
一度目も二度目もSDKが生成するログインURLに飛ばしているんですよね?
また、一度目と二度目の間に友達を増やしたりはしていないですよね?
それと、一度目と二度目というのはどういう区切りですか?プログラムを2回実行するという意味でいいですか?プログラムの実行は1回で、その途中で認証を取り消している意味ではないですよね?
PHP-SDKはセッションにFacebookの情報を保存するはずなので、連携後にprint_r($_SESSION);でアクセストークンを見ることができますので一度目の連携後と二度目の連携後でそれぞれ確認してください。
また、二度目の連携前にセッションをunsetしてから二度目の連携を実行してセッション情報に何か変化がないか確認してください。
fb_*の値を全て消してみましたがどうも変わらないようです。
2012/07/11 18:11:39SESSIONを追ってみた結果ですが、getAccessToken()を呼び出すとSESSIONに値が格納されるようでした。
正常時の場合ですと、アプリに戻った時に
fb_[アプリID]_code、fb_[アプリID]_access_tokenに長い文字列が格納されます。
失敗の時にはfb_[アプリID]_code、fb_[アプリID]_access_tokenには何も格納されずgetAccessToken()の値が「アプリID|アプリシークレット」という値がわたってきます。
どうぞよろしくお願いします。
躓いているのは7ではなく6だと思われるのですが、シークレットモードでない場合のシーケンスと挙動を調べてみたらどうでしょうか?
2012/07/12 16:19:07コメントでテストフローの全シーケンスを書こうとすると行数的に厳しいから端折って書いておられるのであれば複数のコメントを使うなり、別ページで詳細(できればソースも)を説明してそこのURLを貼るなりした方が解決は早いと思います。
少なくとも上であげられているテストフローはざっくりしすぎで、これ以上は回答の付けようがありません。