私は Facebook PHP SDK を単独で利用しています。JS SDK をまったく使用したくありません。
なぜなら getUser(); ユーザーがログインしていない場合でも SDK からユーザー ID を返すことができるため、try/catch ステートメントを使用してユーザーがログインしているかどうかを確認することにしました。
try
{
$me = $CI->facebook->api('/me');
$CI->our_fb['is_fb']='YES';
echo "hello";
}
catch(FacebookApiException $e)
{
echo "catch";
}
このステートメントは、すべてのファイルのグローバル インクルード ファイルに含まれています (簡単にするため)。
なので、場合によってはFacebookのログインURLを生成しています。期待される機能は、ユーザーが Facebook にログインし、アプリを承認し、ログイン URL に設定されたリダイレクト URI に返され、その時点で try ステートメントが実行され、$CI->our_fb['is_fb'] が設定されることです。
しかし、これは起こっていません。
ユーザーがすでに Facebook にログインしており、アプリが承認されている場合、アプリは完全に機能します。成功
ユーザーが Facebook にログインしていない場合、リダイレクトされた後、変数は設定されません。失敗
ユーザーがログインしているが、リダイレクト後にアプリが承認されていない場合、変数は設定されません。失敗。
後者の 2 つのケースでは、単にページを更新すると、変数が設定されます - SUCCESS。ただし、ページを更新することは不要/無意味な余分な労力です。
私の問題は、FB にログインする必要がある場合、または FB で初めてログインするときなどにアプリを承認する必要がある場合、不要な更新が追加されることです。その理由はわかりません。
Cookie/セッションと関係があると思いますか?SDKに自動的に返される/渡されると想定しているアクセストークンが同時に設定されずに保存されるのはどれですか?
誰でもアイデアはありますか?