opAuth loginを実装しようとしています。 PHP 5.4.45。私はPHPのページを起動すると、私はsession_id()
を印刷する場合、私はこの後opauthの実装とセッションIDの問題
if(!session_id()) session_start();
を呼び出し、それが "fsdfoasdiuhf736jf732938f92"(i)を言う
を出力します今私はOpAuthでFacebookのログインをクリックしてください。すべて正常ですが、私はユーザーデータを正しく取得しますが、コールバックページでセッションIDが異なります。つまり、私はsession_id()を印刷すると、(i)と異なるIDを出力します。
問題は、ユーザー名を$ _SESSION ['user']としてホームページにリダイレクトすると問題になります再び元のセッションID(i)に戻ります。ユーザー名はそこに設定されていません。
私はセッションが開始する前に確認しています。私は何か間違っているのですか?
UPDATE
私が起こっても何の手がかりを持っていると思います。ログインURLを呼び出すと、元のセッションIDがあります。コールバックURLをこの関数に渡します。 facebookがログインを許可し、コールバックURLにリダイレクトするとき、PHPがfacebookからのリクエストとしてこれを見ているかもしれませんか?これは新しいセッションなので、新しいセッションを作成します。ユーザーがいたものと同じではありませんか?そして、PHPが元のページにリダイレクトすると、元のセッションに戻りますか?これは理にかなっていますか?もしそうなら、どのようにセッションを同じに保つことができますか?
私は、アクセス許可の昇格が行われているため、セッションIDを再生成していると推測しています。おそらく 'session_id( 'setnewsidreceivedfromOauth')を使用して解決します。 – Xorifelse
しかし、元のセッションIDはどのように戻っていますか?それは可能ですか?彼らはデフォルトのcallback_transportとして 'session'を使います。私はこれを「投稿」に変更しても、同じことが起こります。 – aVC
OpAuthの詳細な検査では、コールバックがセッションに設定されている場合にのみ、新しいセッションが開始されます。それは他の何かでなければなりません。あなたは潜在的に229行の 'opauth.php'をあなたが持っているコードの行に置き換えることができます。それが "設計どおりに動作する"かどうかはわかりません – Xorifelse