web-dev-qa-db-ja.com

X-Frame-Optionsで表示が禁止されているため、ドキュメントの表示が拒否されました

Facebookアプリを作成していますが、JavaScript APIを使用してユーザーのログインステータスを取得しようとすると、エラーが発生することがあります。

「X-Frame-Optionsで表示が禁止されているため、ドキュメントの表示が拒否されました。」

ユーザーアカウントではなく、アプリの[ログインステータスの確認]ページのみにアクセスするたびにこれを再現できましたFacebookをページとして使用している場合。これは問題の原因であることがわかっているので、これを回避するのは簡単ですが、ユーザーはこれを知らない可能性があります。

ユーザーがFacebookをページとして使用しているかどうかを判断する方法はありますか?それは私のアプリ全体をかなり台無しにするようですので。

23
William Thomas

私もこの問題があり、修正しました:ユーザーが既にログインしているときに、アプリがユーザーをFacebookからログイン画面にリダイレクトしていました(認証ダイアログボックス)。ログイン、またはログインしていない場合はダイアログボックスへ。

1
Gerard Nijboer

これは、FacebookがWebブラウザーからアプリにリダイレクトし、Facebook承認サインインにリダイレクトする場合の問題です。フォームがページを置き換え、Facebookキャンバスにロードされないことを確認する必要があります。 。

したがって、次のようにクリーンなリダイレクトを行う必要があります-これはノードの例です

res.send("<script> top.location.href='"+ "https://www.facebook.com/dialog/oauth?    
client_id=*********&redirect_uri=http://apps.facebook.com/myapp" + "'</script>");

このFacebookの開発ページとそのステップ3を見てください

https://developers.facebook.com/docs/howtos/login/server-side-login/

デスクトップだけのモバイルアプリには問題がないようです

1
Simon Tomlin

このJavaScriptは機能しますか?

document.write(isFacebookPage()?"YES, I'm in a Facebook Page!":"No, not a Facebook Page");

function isFacebookPage(){
    return (document.location.href.indexOf('/pages/')>0);
}
0
jornare