facebookアプリを作ろうとサンプルプログラムで動作を試していますが、いきなりログイン(ユーザーによるアプリの許可)でつまずいています。

以下のサンプルソースをコピペして挙動を確認しています。
http://eeyan.hateblo.jp/entry/2013/02/04/193920

まず、facebookページのiframe内に表示された『facebookにログイン』というリンクをクリックすると『このコンテンツはフレーム内で表示できません』と怒られてしまいます。
素人ながら『IEでのcookieに問題があるのか・・・』と
$facebook = new Facebook(array(
'appId' => '*****',
'secret' => '*************',
'cookie' => true,
));
と'cookie'を追加したり

$ua = $_SERVER['HTTP_USER_AGENT'];
// IEのcookieを許可する
if (strpos($ua, 'MSIE') !== FALSE) {
header('p3p: CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"');
}
をソースの一番上に追加したりしてみますが怒られっぱなしです。
文字数の関係で質問の続きは補足へ記載します。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2013/07/27 12:37:52
  • 終了:2013/07/27 16:40:09
id:bilbao-jp

$facebook->getLoginUrl($params);
で生成されたURLがおかしいのか?と、生成されたURLを一旦メモなどにコピぺしクリックすると、正常にアプリ許可の画面が表示され、承認するとリダイレクトURLに飛んでくれます。
ただし、『ユーザー情報』画面ではなく『facebookにログイン』画面が表示され、『facebookにログイン』のリンクをクリックすると『ユーザー情報』画面に切り替わります。
その後はF5で何度リロードしても、『ユーザー情報』画面のままです。
アプリ許可を得ているのだから、最初っから『ユーザー情報』画面になればいいのに・・・と思っているのですが・・・。

また、アプリ許可を得てからブラウザを再起動し、再度アプリにアクセスすると『facebookにログイン』の画面が出てきます。
で、『facebookにログイン』のリンクをクリックすると、『ユーザー情報』画面に切り替わります。
この挙動も前述と同様と考えています。


使用しているブラウザはIE10で、まずPC環境のみでテスト中です。
『appId』と『secret』は変更済み。
『facebook.php』のパスも自分の環境に合わせ変更済みです。

『このコンテンツはフレーム内で表示できません』の問題と、アプリ許可を得ているのに『ユーザー情報』画面の前に『facebookにログイン』がイチイチ表示される問題の2点よろしくお願いします。

ベストアンサー

id:kaji0120 No.1

kaji0120回答回数59ベストアンサー獲得回数132013/07/27 12:51:26

ポイント500pt

x-frame-optionが原因でしょうか。
https://developer.mozilla.org/ja/docs/HTTP/X-Frame-Options
https://www.facebook.com/Hivelocity.inc/posts/323402541028790
http://buzzwordjp.blogspot.jp/2011/09/iframe-x-frame-options-http.html
3つ目のリンクを参考にして、metaタグに

<meta http-equiv="X-FRAME-OPTIONS" content="SAMEORIGIN" />

を追加してみてください。
このタグによって50%くらいの確率で問題が解決しますが、できない場合もあるので、お手数ですがその時はその旨コメントしてください。

---
追記です。
http://blog.livedoor.jp/qoozy/archives/52524054.html
もしかしたらこのURLが参考になるかもしれませんので見てみてください。

他1件のコメントを見る
id:bilbao-jp

こんにちは、御回答ありがとうございます。
X-FRAME-OPTIONSは初めてだったのでいろいろ調べていたのと他のことも試していたので返事が遅くなりました。

>>アプリ許可を得ているのに『ユーザー情報』画面の前に『facebookにログイン』がイチイチ表示される
>に関しては解決できません。
なるほど、分かりました。
ありがとうございます(^^♪

で、問題の『このコンテンツはフレーム内で表示できません』ですが・・・

<meta http-equiv="X-FRAME-OPTIONS" content="SAMEORIGIN" />
<meta http-equiv="X-Frame-Options" content="ALLOW-FROM https://www.facebook.com" />

など数パターン試しましたが『このコンテンツはフレーム内で表示できません』から解放されません><

また、追記で教えていただいたページも参照し、基本設定を穴があくまで何度も見直しましたがこれも解決に至りません。
まだまだ頑張ってみますが、引き続き回答をお待ちします。

2013/07/27 15:06:57
id:bilbao-jp

できましたー\(^_^)/
できたかどうかわかりませんが、とりあえず『このコンテンツはフレーム内で表示できません』から解放されました。

サンプルソースの

<a href="<?php echo $loginUrl; ?>">Facebookにログイン</a>

<a href="<?php echo $loginUrl; ?> target="_top"">Facebookにログイン</a>

に変更したらiframe内の『Facebookにログイン』からアプリ許可の画面へ移行しました。
参照URLの2番目にお答えをいただいていたんですね~(^_^;)
サンプルを疑わなかったのでハマってしまいました。

とにかく『このコンテンツはフレーム内で表示できません』から解放されましたので、この質問は閉じさせていただきます。
ありがとうございました。

2013/07/27 16:39:32

その他の回答(0件)

id:bilbao-jp

質問文を編集しました。詳細はこちら

id:kaji0120 No.1

kaji0120回答回数59ベストアンサー獲得回数132013/07/27 12:51:26ここでベストアンサー

ポイント500pt

x-frame-optionが原因でしょうか。
https://developer.mozilla.org/ja/docs/HTTP/X-Frame-Options
https://www.facebook.com/Hivelocity.inc/posts/323402541028790
http://buzzwordjp.blogspot.jp/2011/09/iframe-x-frame-options-http.html
3つ目のリンクを参考にして、metaタグに

<meta http-equiv="X-FRAME-OPTIONS" content="SAMEORIGIN" />

を追加してみてください。
このタグによって50%くらいの確率で問題が解決しますが、できない場合もあるので、お手数ですがその時はその旨コメントしてください。

---
追記です。
http://blog.livedoor.jp/qoozy/archives/52524054.html
もしかしたらこのURLが参考になるかもしれませんので見てみてください。

他1件のコメントを見る
id:bilbao-jp

こんにちは、御回答ありがとうございます。
X-FRAME-OPTIONSは初めてだったのでいろいろ調べていたのと他のことも試していたので返事が遅くなりました。

>>アプリ許可を得ているのに『ユーザー情報』画面の前に『facebookにログイン』がイチイチ表示される
>に関しては解決できません。
なるほど、分かりました。
ありがとうございます(^^♪

で、問題の『このコンテンツはフレーム内で表示できません』ですが・・・

<meta http-equiv="X-FRAME-OPTIONS" content="SAMEORIGIN" />
<meta http-equiv="X-Frame-Options" content="ALLOW-FROM https://www.facebook.com" />

など数パターン試しましたが『このコンテンツはフレーム内で表示できません』から解放されません><

また、追記で教えていただいたページも参照し、基本設定を穴があくまで何度も見直しましたがこれも解決に至りません。
まだまだ頑張ってみますが、引き続き回答をお待ちします。

2013/07/27 15:06:57
id:bilbao-jp

できましたー\(^_^)/
できたかどうかわかりませんが、とりあえず『このコンテンツはフレーム内で表示できません』から解放されました。

サンプルソースの

<a href="<?php echo $loginUrl; ?>">Facebookにログイン</a>

<a href="<?php echo $loginUrl; ?> target="_top"">Facebookにログイン</a>

に変更したらiframe内の『Facebookにログイン』からアプリ許可の画面へ移行しました。
参照URLの2番目にお答えをいただいていたんですね~(^_^;)
サンプルを疑わなかったのでハマってしまいました。

とにかく『このコンテンツはフレーム内で表示できません』から解放されましたので、この質問は閉じさせていただきます。
ありがとうございました。

2013/07/27 16:39:32
id:bilbao-jp

質問文を編集しました。詳細はこちら

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません