Facebook Graph API - 收到无效 JSON 回复

Facebook Graph API - Received Invalid JSON reply

我们正在使用 Facebook Graph API v2.9 到 运行“饲料平衡”应用程序:Like What You Hate

应用程序 运行s React 从 NodeJs 服务器提供服务。

该应用程序在几个月前(2017 年 12 月)运行运行良好,当时我们进行了一些更新,但我们最近发现该应用程序已停止工作。

经过调查,我发现当我达到以下端点时:

/me/picture?height=80&width=80
/me/picture
/{a-defined-user-id}/picture

图 api 是 return 在响应中出现以下错误:

{
    "error": {
        "code": 1,
        "error_subcode": 1357046,
        "message": "Received Invalid JSON reply.",
        "type": "http"
    }
}

其他端点,例如:

/me
/me/likes
/me/likes?limit=1000

return 符合预期的 JSON 对象。

我使用 Graph API Explorer 到达了 /me/picture 端点,我得到了似乎有效的 JSON 响应。

看来是SDK代码的问题。我们正在使用 Javascript SDK 并将其安装在我们的应用程序中:

window.fbAsyncInit = function() {
    window.FB.init({
        appId            : fbAppId,
        xfbml            : true,
        version          : 'v2.9',
        cookie           : true
    });
    window.FB.AppEvents.logPageView();
};

(function(d, s, id){
    var js, fjs = d.getElementsByTagName(s)[0];
    if (d.getElementById(id)) {return;}
    js = d.createElement(s); js.id = id;
    js.src = '//connect.facebook.net/da_DK/sdk.js';
    fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));

需要注意的一件事是我们正在获取丹麦语 SDK (da_DK) 服务器,但我也尝试过美国版本 (en_US) 并看到了同样的问题。

编辑:刚发现最近有一个 Bug Report 开放的这个问题。

我们最终只使用 /me 响应中的当前用户 ID,并将端点直接放入 React 中图像组件的源中:

export default class Avatar extends React.Component {

    static propTypes = {
        userId
    };

    render () {
        const { userID } = this.props;
        return <img className="avatar__gfx" src={{ `https://graph.facebook.com/${userId}/picture?type=small` }} />
    }
}

在 facebook 解决此错误之前,有一个解决方法。您可以使用

/me/?fields=picture

这也适用于 Pages 图片

{page-id}/?fields=picture

但遗憾的是似乎不适用于 userId

根据最新的错误报告,通过修改端点 URL 才能够解决此问题。

变化:/{USER_ID}/picture

至:/{USER_ID}/picture?redirect=false