Facebook错误:请求此资源需要访问令牌

时间:2013-04-28 18:20:57

标签: jquery facebook-graph-api

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

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

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

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

此致 ç

注意: 我已经尝试登录和退出Facebook,结果相同。此插件表示它不要求您登录或进行身份验证。它只抓取照片而没有auth,FB提供的唯一东西是“照片” - 而不是“帖子”,“新闻”,“状态”等。

请注意,它似乎在使用相同的脸书ID的演示网站(上图)上完美运作。

1 个答案:

答案 0 :(得分:1)

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

  1. 你的比率有限。在这种情况下,似乎每单位时间允许一定数量的匿名请求,但过去必须进行身份验证。如果是这种情况,只需等待即可解决问题,但您需要确保了解速率限制的工作原理,以便您的应用不会因使用而受到影响。
  2. 您正在根据User-Agent进行过滤。您可以为每个请求发布请求标头(基于浏览器,还是针对社会主义者)?
  3. 编辑:通过以下评论,通过原始提问者@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!