2

当我尝试发布自定义操作时,我收到一个错误(如下),声称代表我的对象的 URL 是网站类型。正如您从我的对象 html 中看到的那样,我已经包含了一个。og:type '{app_namespace}:{object_name}' 标签,实际上这段代码大部分是由开发者应用程序生成的。我过去曾为其他应用程序成功发布过自定义操作,但这次我不知道有什么不同。任何建议,将不胜感激。

脸书错误:

{"error":{"message":"(#3502) Object at URL {URL} has og:type of 'website'. The property 'issue' requires an object of og:type '{app_namespace}:{object_name}'. ","type":"OAuthException","code":3502}}

对象 HTML:

<html>
  <head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# {app_namespace}: http://ogp.me/ns/fb/{app_namespace}#">
    <meta property="og:type"   content="{app_namespace}:{object_name}" /> 
    <meta property="fb:app_id" content="{app_id}" /> 
    <meta property="og:url"    content={URL for this Html} /> 
    <meta property="og:title"  content="Sample title" /> 
    <meta property="og:image"  content="https://s-static.ak.fbcdn.net/images/devsite/attachment_blank.png" />
  </head>
<body>
</body>
</html>

我用来发布操作的代码:

<head>
    <script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
    <script type="text/javascript">
        function clickHandler() {
            FB.getLoginStatus(function (response) {
                if (response.authResponse) {
                    FB.api('/me/{app_namespace}:{action_name}?{object_name}={object_url}', 'post', function (response) {
                        alert(JSON.stringify(response));
                    });
                } else {
                    //If user not logged in initiate login process
                    FB.login(function (response) {

                        if (response.authResponse) {
                            FB.api('/me/{app_namespace}:{action_name}?{object_name}={object_url}', 'post', function (response) {
                                alert(JSON.stringify(response));
                            });
                            //actionPublish();
                        } else {
                            //user cancelled login or did not grant authorization
                        }
                    }, {
                        scope: 'publish_actions'
                    });
                }

            });
        }

        $(document).ready(function () {
            window.fbAsyncInit = function () {
                FB.init({
                    appId: '{app_id}',
                    status: true,
                    cookie: true,
                    xfbml: true,
                    oauth: true
                });

                // run once with current status and whenever the status changes
                FB.getLoginStatus(updateButton);
                FB.Event.subscribe('auth.statusChange', updateButton);
            };

            (function () {
                var e = document.createElement('script');
                e.async = true;
                e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
                $("#fb-root").append(e);
            }());
        });
    </script>
</head>

<body>
    <div id="fb-root"></div>
    <button id="publishButton" onclick=clickHandler(); return false " >Publish</button>
</body>

编辑:

如果我将 fb 对象 URL 粘贴到调试工具中,则会收到以下错误:

“在 URL 'http://www.thepropagator.com/takeAction/draft_1/demos3/issue_4.php' 或通过重定向或 'og:url' 指定的 URL 之一获取对象时出错属性,包括http://www.thepropagator/takeAction/draft_1/demos3/issue_4.php之一。”

如果我尝试将 URL 标签全部屏蔽掉,错误就会消失,无论哪种情况,当我尝试发布操作时,Facebook 都会发回错误,指出该对象是网站类型。

4

2 回答 2

0

请参阅对此线程的前两个响应。

这个线程也可以帮助你。

还是这个

其他建议:

  1. fb:app_id 标签必须与您尝试使用的应用相匹配。
  2. 您确定 og:url 实际上与对象 URL 匹配吗?也许您在事件页面上有一个 og:url 标签,它将 facebook 重定向到没有事件 og 标签的其他地方。
  3. 您是否对另一个应用程序中的对象使用了相同的 URL?这也可能导致问题。如果您的网站需要登录,这也可能是一个问题。
于 2012-07-10T00:56:12.383 回答
0

我最终创建了一个新的 Facebook 应用程序。该应用程序也有同样的问题,但在稍微调整后(使用调试器和我的代码,我开始工作。我不确定这里有什么收获,但我相信问题可能有多达三个根,我这边的错误,我这边的 Facebook 缓存和缓存。

感谢每一个人的回复。

于 2012-07-16T00:39:17.400 回答