我目前正在制作一个应用程序,在你想删除应用程序中的一些已发布内容后,会从应用程序中删除你在Facebook上发布的链接。
昨天一切正常。
今天,当我尝试删除Facebook上共享的任何链接时,我收到以下错误:
{
"error": {
"message": "An unknown error has occurred.",
"type": "OAuthException",
"code": 1
}
}
用户已授予read_stream
和publish_actions
。
我也在Facebook提供的Graph Explorer工具中尝试了同样的事情,同样的错误发生了,而昨天一切都很好。
我不知道发生了什么。如果有人可以照亮我,我将永远感激。
更新代码:
/**
* @param {!function(string):boolean} filter
* @param {Function} callback
*/
findRemoveFBposts = function(filter, callback) {
var IDS = [];
var removeLinks = function(index) {
FB.api(IDS[index], "DELETE", function(response) {
++index < IDS.length ? removeLinks(index) : (callback && callback(IDS));
});
};
var fetchFB = function(query) {
FB.api(query, function(response) {
if (!response['error']) {
for (var i = 0, n = response['data'].length; i < n; i += 1) {
filter(response['data'][i]['link']) && IDS.push(response['data'][i]['id']);
}
response['paging'] && response['paging']['next'] ? fetchFB(response['paging']['next']) : (IDS.length ? removeLinks(0) : (callback && callback(IDS)));
} else {
IDS.length ? removeLinks(0) : (callback && callback(IDS));
}
});
};
fetchFB("/v2.0/me/links?fields=link");
};
findRemoveFBposts(function(link) {
return link=='http://mywebsite.com/somepost';
}, function() {
console.log('Everything is done')
});
编辑:
这是一个利用Facebook安全问题的功能。正确的方法是在Patrick的回答中。
答案 0 :(得分:2)
看起来这可能正在发生,因为您的应用没有发布您要删除的项目。您需要检查实际发布的是您的应用
帖子应该有一个应用程序对象(如果它被发布了一个应用程序,否则它根本就不存在)与应用程序信息一起检查返回的关于帖子的数据
{
//...
"application": {
"name": "Graph API Explorer",
"id": "145634995501895"
},
//...
}
所以你可以做到
//Either the post was not created by an app
//or was not created by your app
if(response['data'][i].application === undefined || response['data'][i].application.id != "your app id") {
return;
}