FOSUserBundle と FOSUserFacebookBundle を使用してユーザーを認証しています。問題は、/login ページにアクセスしたときです。ユーザー名とパスワードを含む 2 つのテキスト フィールドがあります。ユーザー名とパスワードを入力すると、次のエラーが表示されます。
The Facebook user could not be retrieved from the session.
Facebook経由ではなくフォーム経由でユーザーにログインしているため、これは非常に奇妙なエラーですが、Facebook経由でユーザーにログインしているようです。ソースコードをいじってみたところ、security.yml/firewall の設定は次のようになりました。
firewalls:
main:
pattern: ^/.*
form_login:
login_path: /login
check_path: /login_check
provider: fos_userbundle
fos_facebook:
app_url: "http://apps.facebook.com/myapp/"
server_url: "http://localhost/Symfony/web/app_dev.php"
login_path: /login
check_path: /login_check
default_target_path: /
provider: my_fos_facebook_provider
anonymous: true
logout:
path: /logout
target: /
handlers: ["fos_facebook.logout_handler"]
#http_basic:
# realm: "Secured Demo Area"
login:
pattern: ^/login$
security: false
私が心配しているのは、/login_check が Facebook セッションが常に存在するかどうかをチェックすることですが、これはあまり望ましくありません。fos_facebook の login_path と check_path を変更すると、すべて正常に動作します。これを引き起こす原因と、この問題を解決する方法はありますか?