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
我们正在使用 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