0

我使用一个名为 Socialist 的插件来获取 Facebook 图像。

在我的网站上运行时,我收到此错误(萤火虫控制台):

http://graph.facebook.com/in1dotcom/photos?limit=7 400 Bad Request 222ms

{
"error": {
"message": "An access token is required to request this resource.",
"type": "OAuthException",
"code": 104
}
}

使用社会主义插件在我的网站中运行时的标题:

Request URL:********
Request Method:GET
Status Code:200 OK
Request Headersview source
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
Cookie:cookie-agreed-en=2; Drupal.tableDrag.showWeight=0; Drupal.toolbar.collapsed=0; SESS698a29b8d8c900ba7e7794565975ca75=1b_V4T71CnFDWA24ug9dMc2ZWk4YOdQ8eyy1FQvwMZI; has_js=1
Host::********
If-Modified-Since:Sun, 28 Apr 2013 18:43:15 +0000
If-None-Match:"1367174595"
Referer::********
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.65 Safari/537.31
Response Headersview source
Cache-Control:no-cache, must-revalidate, post-check=0, pre-check=0
Connection:Keep-Alive
Content-Language:en
Content-Type:text/html; charset=utf-8
Date:Sun, 28 Apr 2013 18:45:40 GMT
ETag:"1367174740"
Expires:Sun, 19 Nov 1978 05:00:00 GMT
Keep-Alive:timeout=5, max=100
Last-Modified:Sun, 28 Apr 2013 18:45:40 +0000
Link:<http://:********>; rel="shortlink",<:********>; rel="canonical"
Server:Apache
Transfer-Encoding:chunked
X-Generator:Drupal 7 (http://drupal.org)
X-Powered-By:PHP/5.4.4

在我的浏览器中直接运行时的标题:

Request URL:http://graph.facebook.com/in1dotcom/photos?limit=7
Request Method:GET
Status Code:200 OK
Request Headersview source
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
Cookie:datr=mhdvUW42_Gu_woq3PP7hPhaj
Host:graph.facebook.com
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.65 Safari/537.31
Query String Parametersview sourceview URL encoded
limit:7
Response Headersview source
Access-Control-Allow-Origin:*
Cache-Control:private, no-cache, no-store, must-revalidate
Connection:keep-alive
Content-Encoding:gzip
Content-Length:1058
Content-Type:application/json; charset=UTF-8
Date:Sun, 28 Apr 2013 18:47:44 GMT
ETag:"87876279654a470b76b73924ea9b095fb9cc4b75"
Expires:Sat, 01 Jan 2000 00:00:00 GMT
Pragma:no-cache
X-FB-Debug:dWTXe1fRmxaCxH3bhi7yHfTuVUlE1Th0s2Fwn50u+r4=
X-FB-Rev:798183

但是如果我http://graph.facebook.com/in1dotcom/photos?limit=7直接在浏览器中运行它就可以正常工作。

我什至尝试了不同的 facebook 页面(包括上面的作者演示),以防这是一个权限问题,但我遇到了相同的结果。

这是插件的链接:

jquery.socialist.js

你可以在这里看到一个工作演示:

http://plugins.in1.com/socialist/demo#social

关于为什么会发生这种情况的任何想法。

问候 C

注意:我已经尝试登录和退出 facebook,结果相同。这个插件说它不需要你登录或认证。它只抓取照片,没有身份验证,FB 提供的唯一内容是“照片”——而不是“帖子”、“新闻”、“状态”等。

另请注意,它似乎在使用相同的 facebook id 的演示站点(上图)上运行良好。

4

1 回答 1

1

我可以想到您可以检查的几种可能性:

  1. 你得到速率限制。在这种情况下,似乎每单位时间允许一定数量的匿名请求,但在此之后您必须经过身份验证。如果是这种情况,只需等待即可解决问题,尽管您需要确保了解速率限制的工作原理,以免您的应用程序在使用中崩溃。
  2. 您正在根据User-Agent. 您可以发布每个请求的请求标头(基于浏览器和社会主义)吗?

编辑:从下面的评论中,通过原始提问者@Cyber​​campbell:

好的...我从工作演示网站下载 .js 并将其与下载包中的 .js 进行比较,并在 ajax 调用中发现了这种差异: beforeSend: function(xhr){xhr.setRequestHeader('User-Agent' ,'Mozilla/5.0 (Windows NT 6.1; rv:6.0) Firefox/6.0');},并且这个:dataType:'json'变成了这个:dataType:'jsonp' 我添加了这个,现在它可以工作了......我猜他们只是在更新文件方面有点落后

看起来问题出在过时的社会主义发行版中。买者自负!还有出色的侦探工作@Cyber​​campbell!

于 2013-04-28T18:23:37.427 回答