5

Google ガジェット内で動作する Facebook Connect アプリケーションを構築しています。ガジェットであるということは、アプリケーションが iframe 内で実行されることを意味します。アプリケーション内には、登録ユーザーがコメントを投稿できるフォームがあります。提出はAJAXで行っていますが、通常のフォームでも同じ結果が得られます。問題は、ユーザーの Facebook ID を取得する必要があることです。Firefox では正常に動作しますが、Internet Explorer 7 では次のエラーが発生します。

 'A session key is required for calling this method'

これは IE がサードパーティの Cookie を処理する方法によるものだと思います。なぜなら、[インターネット オプション] / [プライバシー] / [詳細設定] に移動し、[自動 Cookie 処理をオーバーライドしてすべての Cookie を受け入れる] にチェックを入れると、正常に動作するからです。誰でも改ざんできるため、JavaScript から Facebook ID を渡すことができません。

編集: iframe のコンテンツを直接開くと、アプリは正常に動作します。この問題は、実際には IFRAME と IE のセキュリティ モデルが原因です。

私は何か間違ったことをしていますか?この問題を回避するにはどうすればよいですか?

4

4 に答える 4

3

ユーザーが FB 接続ログインに続いて PHP ページにログインしているかどうかを確認する方法を変更することで、同じ問題を解決しました。

そのため、IE7 で FB Connect にログインします。実際に FaceBook にログインしていることを確認する必要がある次以降のページの読み込みでは、次のコードを使用しました ($facebook->require_login() およびその他の関数は機能しなかったことに注意してください - これらは IE 7 でのみ null を返しました)。

// Validate from Facebook that session is valid and user is logged in. require_once 'facebook/facebook.php'; $facebook = new Facebook(YourAppsAPIKeyPublic, YourAppsAPIKeySecret); $facebook->api_client->session_key = $this->userAPISessionKey; $fb_user_id = $facebook->api_client->users_getLoggedInUser();

$fb_user_id には、有効な FaceBook ユーザー ID が含まれているはずです。

プライバシー ポリシーと facebook connect + IE 7 について:

これは私にはうまくいきませんでしたが、他の人にはうまくいくようです。HTAccess で:

Header append P3P "CP=\"HONK\""

またはPHPファイルで:

header('P3P: CP="CAO PSA OUR"'); また header('P3P: CP="HONK"');

参照: http://forum.developers.facebook.com/viewtopic.php?id=28636

ASP.NET:

protected void Application_BeginRequest(Object sender, EventArgs e)
{
    HttpContext.Current.Response.AddHeader("p3p", "CP=\"CAO PSA OUR\"");
}
于 2009-06-30T18:20:41.393 に答える
1

少し醜いですが、機能する回避策を見つけました。ユーザーが「ログイン」ボタンをクリックすると、自分のサイトから来て、Facebook Connectログインボタンを含むポップアップが開きます。ユーザーがログインしたら、ポップアップを閉じて iframe をリロードします。

2 つのポップアップを開くため、これは本当に見苦しいですが、少なくとも機能します。JavaScript を使用して Cookie が有効になっているかどうかを検出し、有効になっている場合は最初のポップアップをスキップします。

私はまだより良い解決策を受け入れています...


編集: Facebook は、別のウィンドウを開く代わりに、ポップアップ内で「偽の」ポップアップを使用するようになりました。今、私には大丈夫なポップアップが1つしかありません。

于 2009-02-16T20:17:12.970 に答える
0

Facebook 開発者プラットフォームで作成されたこのスレッドも参照してください。

http://forum.developers.facebook.com/viewtopic.php?id=452

于 2010-03-22T11:38:46.747 に答える