iframe アプリ内でいくつかのアクセス許可を要求しているときに、ユーザーを Facebook に認証 (ログイン) しようとしています。
PHP SDK と組み合わせて JS SDK を使用しています。したがって、最初にユーザーがログインしているかどうかを確認し、すべてが PHP を使用して問題ないことを確認$facebook->getUser()
します。失敗した場合は、この JS が実行されているページにユーザーをリダイレクトします。
FB.getLoginStatus(function(response) {
if (response.status === "connected") {
// Ok, go home
} else {
FB.login(function(response) {
if (response.authResponse) {
// Ok, go home
} else {
// Cancelled, go home
}
}, {scope: '<?php echo implode(',', $this->permissions); ?>'});
}
});
これにより、権限を求めるログイン ダイアログが作成されます。ご覧のとおり、ユーザーが適切に認証/承認された場合と、ダイアログがキャンセルされた場合があります。いずれの場合でも、アプリケーションのルートにリダイレクトするという 1 つのことを行う必要があります。
そのため、ダイアログが表示され、ユーザーがログインすると、リダイレクトされてホームに戻ります。ここで、PHP を使用してgetUser()
.
ここでの問題は、ユーザーが初めてログインしてリダイレクトされるときgetUser()
は常に空であり、ユーザー セッションがないことです。アプリの iframe を保持している facebook ページを更新すると、セッションがあり、権限が適切に設定され、ダイアログがその仕事を完了したことを示します。
最初のリダイレクトが機能しない理由について何か考えはありますか?
同様の問題を見つけましたが、具体的な実用的な解決策はありません。