Facebook Open Graph动作编码错误

时间:2012-01-29 07:38:11

标签: facebook facebook-graph-api action opengraph facebook-opengraph

我已经搞好了很多年,调试工具或终端控制台没有问题,但是它在以下代码中不断弹出“出错”:

<script type="text/javascript">
    function postCook()
    {
        $pageURL = window.location;

        FB.api('/me/bgfapp:watch?movie=' + $pageURL,'post',
                    function(response) {
            if (!response || response.error) {
                    alert('Error Occurred');
            } else {
                alert('Post was successful! Action ID: ' + response.id);
                }
        });
    }
 </script>

我试图回显$ pageURL并成功返回当前网址,所以我无法弄清楚上面的代码有什么问题


更新时间:2012年1月30日

错误说明:发生错误[object Object] [object Object]

2 个答案:

答案 0 :(得分:1)

您可能已经找到了解决方案,但希望这会对其他人有帮助。

这里的问题是您不知道响应对象中子节点的名称。如果您无法命名特定节点,那么您将不断收到该错误消息:“发生错误[对象对象]消息”

我有一个简单的解决方法,允许您在不知道响应对象的子节点名称的情况下查看错误消息。 JSON.stringify将简单地将整个对象转换为字符串,允许您查看其内容。它不会很漂亮,但你肯定能够在那里看到错误信息。

试试这个:

<script type="text/javascript">
function postCook()
{
    $pageURL = window.location;
    FB.api('/me/bgfapp:watch?movie=' + $pageURL,'post', function(response) {
        if (!response || response.error) {
          alert(JSON.stringify(response));
        } 
        else {
          alert('Post was successful! Action ID: ' + response.id);
        }
    });
}

另一种解决方案是将响应对象的内容输出到控制台而不是执行警报,只需将代码示例中的第7行替换为:

console.log(response);

从此处,您可以打开Web浏览器的开发控制台并遍历响应对象的内容。由于控制台并不总是可用(例如,phonegap应用程序),因此前一种解决方案有时更合适。

答案 1 :(得分:0)

根据您的新错误消息,您似乎需要查看response.error所说的内容。你的逻辑说你要么根本没有回应,要么得到response.error。你应该首先找出你所处的情况并采取相应的行动。

response.responseTextresponse.error.responseText未定义,因为它们不会返回给您。

    $pageURL = '/me/bgfapp:watch?movie=' + window.location;

    FB.api($pageURL,'post',
                function(response) {
                     if (!response) { 
                          alert('Error Occurred I got no response with ' + $pageURL);
                     }
                     else if (response.error) {
                          alert('Error Occurred '+ response.error);
                     } else {
                         alert('Post was successful! Action ID: ' + response.id);
                     }
             });

我的建议是尝试简单并按照自己的方式行事。调试您正在检查的所有变量。如果您没有收到回复,则可能是您的API端点调用不存在。如果您收到错误,那么您的通话错误或未经过身份验证。