0

如果我直接访问 URL(https://apps.facebook.com/[appnamespace]/ 或https://mydomain.com/,最后一个是画布,我有一个 Facebook 应用程序(游戏)可以完美运行网址)。但每次我提交应用程序以供审核时,我都会收到以下反馈:“请解决我们审核团队的以下反馈。一旦您完成了下面列出的更改,您可以重新提交以供审核。” 和“您的应用的画布页面未加载”。

问题是我真的不知道要改变什么,因为对于我和与我共享链接的朋友来说,它按预期工作。

我在 Chrome 的控制台中只有一个错误:
“不安全的 JavaScript 尝试从带有 URL https://mydomain.com/ 的框架访问带有 URL https://apps.facebook.com/[appnamespace]/ 的框架。正在访问的框架将“document.domain”设置为“facebook.com”,但请求访问的框架没有。两者必须将“document.domain”设置为相同的值才能允许访问。

我没有在我的页面中指定 document.domain 虽然我之前尝试了一些值来摆脱此错误消息但没有成功。每次我为 document.domain 设置一个值时,我都会在控制台中收到另一个错误:“未捕获的错误:SecurityError:DOM Exception 18”。

我没有找到任何有效的方法。
所以任何帮助/提示将不胜感激。我还尝试在评论描述消息中要求更详细的反馈,但我仍然收到相同的消息,不知道如何解决问题。

谢谢。

4

1 回答 1

0

所以我终于解决了这个问题。
问题是当用户没有连接到 Facebook 时我没有测试应用程序。对我来说,该应用程序不应该在 Facebook 游戏中心之外使用(尽管有可能),Facebook 可能会在应用程序审查期间测试这种情况。因此,以下事件都不会被触发:

  • auth.statusChange
  • auth.authResponseChange
  • 授权登录

为了解决这个问题,我打电话给getLoginStatus,如下所示:

FB.getLoginStatus(function (response) {
        console.log('[Facebook] getLoginStatus: ' + response.status);

        if (response.status !== 'connected' &&
            response.status !== 'not_authorized')
        {
            console.log('[Facebook] not connected');
            $('#loginscreen').show();
            $('#btn-fb-login').click(function (event) {
                event.preventDefault();
                FB.login(function (response) {
                    $('#loginscreen').hide();
                    start(response);
                }, { scope: 'email,publish_actions'});
            });
        }
    });
于 2013-04-11T14:20:15.233 回答