Javascript Can';不要再从FB中删除链接

Javascript Can';不要再从FB中删除链接,javascript,facebook,facebook-graph-api,Javascript,Facebook,Facebook Graph Api,我目前正在开发一个应用程序,在你想删除应用程序中一些已发布的内容后,它会删除你在Facebook上发布的链接 昨天一切顺利 今天,当我尝试删除Facebook上共享的任何链接时,我收到以下错误: { "error": { "message": "An unknown error has occurred.", "type": "OAuthException", "code": 1 } } 用户授予了读取流和发布动作的权限 我也在F

我目前正在开发一个应用程序,在你想删除应用程序中一些已发布的内容后,它会删除你在Facebook上发布的链接

昨天一切顺利

今天,当我尝试删除Facebook上共享的任何链接时,我收到以下错误:

{
    "error": {
        "message": "An unknown error has occurred.",
        "type": "OAuthException",
        "code": 1
    }
}
用户授予了
读取流
发布动作
的权限

我也在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')
});
/**
*@param{!函数(字符串):布尔}过滤器
*@param{Function}回调
*/
findRemoveFBposts=函数(过滤器、回调){
var-id=[];
var removeLinks=函数(索引){
api(ID[索引],“删除”,函数(响应){
++索引
编辑:


这是一个利用Facebook安全问题的功能。正确的方法是在Patrick的回答中。

看起来这可能是因为你的应用程序没有发布你试图删除的项目。你需要确认是你的应用程序发布了这篇文章

帖子应该有一个应用程序对象(如果它发布了一个应用程序,否则它将根本不存在),在返回的关于帖子的数据中检查应用程序信息

{
   //...
   "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;
}

“在你想删除你的帐户之后。”如果用户删除了他们的帐户,他们就没有凭据,因为他们不再有帐户了……问题是,在清理完成之前,用户不会被删除。请尽量理解这是一个与Facebook相关的问题,而不是代码中的错误:昨天工作了,今天没有了。如果有人能告诉我FB是否在一夜之间改变了一些东西,我会很高兴。@PatrickEvans我已经更新了这个问题,使其不再具有误导性。你是指你的帐户,还是他们在facebook上的帐户?@PatrickEvans他们的帐户。他们登录应用程序并触发删除过程。它在用户档案下。有一件事我不明白。如果用户通过在FB中复制粘贴URL共享链接,我如何删除链接。这样的话,分享不是来自应用本身,但我也想删除这些帖子。还有,为什么这在昨天起作用,而今天不再起作用?如果你的应用程序没有发布它们,你就不能删除它们,这是一个安全功能,否则应用程序可以随时删除任何帖子(除非有一个额外的权限允许它,不熟悉所有权限,只是最常用的权限)。至于为什么它在昨天起作用,也许他们在昨天的帖子中没有复制/粘贴链接,而今天他们没有。我最初的想法完全一样,但直到昨天我才发现它的工作原理与代码中显示的一样。问题是,通过FB.ui从应用程序共享的链接不会显示在me/links.Ok中。似乎我们在api中基于Facebook的安全问题制作了一个功能,该功能已经修复。谢谢你的帮助。