【问题标题】:Facebook Open Graph Action coding errorFacebook Open Graph 操作编码错误
【发布时间】:2012-02-21 12:40:22
【问题描述】:

我找了好久,调试工具或终端控制台都没有问题,但在以下代码中不断弹出“发生错误”:

<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 并成功返回当前 URL,所以我无法弄清楚上面的代码有什么问题


更新日期:2012 年 1 月 30 日

错误提示:Error Occurred[object Object][object Object]

【问题讨论】:

  • 打印出响应。这会返回什么: alert('Error Occurred' + response + " " + response.error)
  • 你好,错误提示:Error Occurred[object Object][object Object]
  • 嗨,我将警报稍微修改为: alert('Error Occurred' + response.responseText + " " + response.error.responseText);并且消息变为:发生错误未定义未定义
  • response.error 说什么?

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


【解决方案1】:

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

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

我有一个简单的解决方法,可以让您在不知道响应对象的子节点名称的情况下查看错误消息。 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 应用程序),因此前一种解决方案有时更合适。

【讨论】:

    【解决方案2】:

    根据您的新错误消息,您似乎需要查看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 端点调用不存在。如果您收到错误消息,则说明您的调用是错误的,或者可能未经过身份验证。

    【讨论】:

      猜你喜欢
      • 2012-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多