Javascript Facebook滑块:未捕获类型错误:无法读取属性';长度';未定义的

Javascript Facebook滑块:未捕获类型错误:无法读取属性';长度';未定义的,javascript,jquery,ajax,facebook,Javascript,Jquery,Ajax,Facebook,多年来,我一直有一个网站,运行着不变的代码,满足客户的需求。我可能应该尽快更新它,因为它从冰河时代就已经存在了。该页面使用了一个名为TN3 Gallery的滑块插件。通过ID访问Facebook图片库(即1015059352656862) 然而,前几天我做了一个修改,在文件上传到jquery滑块后,我连接到facebook,不知从哪里退出了工作!我从未更改过这段代码,重新上传了依赖项,更新了依赖项,回滚了依赖项,等等 Facebook似乎已经强制迁移到Graph API v2.0: 控制台日志

多年来,我一直有一个网站,运行着不变的代码,满足客户的需求。我可能应该尽快更新它,因为它从冰河时代就已经存在了。该页面使用了一个名为TN3 Gallery的滑块插件。通过ID访问Facebook图片库(即1015059352656862)

然而,前几天我做了一个修改,在文件上传到jquery滑块后,我连接到facebook,不知从哪里退出了工作!我从未更改过这段代码,重新上传了依赖项,更新了依赖项,回滚了依赖项,等等

Facebook似乎已经强制迁移到Graph API v2.0:

控制台日志:

第1.4.2节

未捕获的TypeError:无法读取未定义的属性“length”

c、 extend.each@jquery-1.4.2.min.js:29

h、 facebook.parsePhotos@tn3.facebook.min.js:12

h、 facebook.request.f.ajax.success@tn3.facebook.min.js:12

b@jquery-1.4.2.min.js:124

c、 extend.ajax.A.(匿名函数)@jquery-1.4.2.min.js:125 (匿名) 函数)@photos?callback=jsonp1435211307395&=1435211307471&offset=0&limit=20&fields=id%2Cpicture%2Csource%2…:1

第1.7.1节

未捕获的TypeError:无法读取未定义的属性“length”

e、 extend.each@jquery-1.7.1.min.js:2h.facebook.parsePhotos@ tn3.facebook.min.js:12

h、 facebook.request.f.ajax.success@tn3.facebook.min.js:12

f、 Callbacks.n@jquery-1.7.1.min.js:2

f、 Callbacks.o.fireWith@jquery-1.7.1.min.js:2

w@ jquery-1.7.1.min.js:4f.ajaxTransport.send.d.onload.d.onreadystatechange @jquery-1.7.1.min.js:4

脚本

$(document).ready(function() {
    var tn1 = $('.mygallery').tn3({  
                skinDir:"skins",
        skin:"tn3a",
            autoplay:true,
            delay:4500,
            mouseWheel:false,           
        image:{
            crop:true,
            random:true,
            maxZoom:3.0

        },          
        external:[{
        origin:"facebook",
        source:"album",
        ID:"10150593562656862"          
        }]
    });
});

不知道你在那里使用的是什么插件,也不知道它是如何尝试从Facebook获取数据的——但它可能会因为最近迁移到Facebook Graph API v2而被绊倒

因此,现在几乎所有的API请求(用户配置文件图片除外)都要求使用访问令牌,而且由于您可能尚未提供访问令牌,因此API请求现在只会导致错误,并且根本不会给您任何实际数据

这意味着,首先你需要使用一个Facebook应用程序——不知道你是否已经在使用,但如果没有,你必须创建一个

然后,如果你想纯粹在客户端完成这项工作,你必须先让用户登录到你的应用程序,这样你就可以获得一个用户访问令牌,供他们在请求中使用


您的替代方法是从服务器端获取数据(然后从服务器端将数据交付给客户端)。这样,您就可以使用应用程序访问令牌,从而消除任何人登录的需要。(请注意,应用程序访问令牌不属于客户端代码,因此不要考虑在JavaScript中使用它。这将为你的应用程序创建相当多的安全漏洞。)

由于Facebook API最近的变化,插件tn3 gallery不再与Facebook配合使用,无法从gallery或用户那里获取图像

这纯粹是巧合,更改在我将内容更新保存到页面的同一天晚上生效,从一开始就似乎是因果关系


插件的开发人员没有提供解决方案,也没有期望插件什么时候能重新运行。它们还提供了使用Flickr图库的功能,但这也不起作用,因为Flickr要求通过https://发送流量请求。最后,我不得不恢复到本地内容更改以使其正常工作。

我忘了提到我使用的是名为TN3图库的滑块。这是我很久以前发现的唯一一个Faillessy从facebook页面提取特定于画廊的图片,而无需创建应用程序。