Facebook图表返回一个站点的访问令牌错误,但不返回另一个站点

时间:2013-05-01 10:14:47

标签: php facebook facebook-graph-api

我认为造成这种情况的根本原因是我对Facebook API如何运作的一般误解,所以我希望有更多知识的人可以指出我正确的方向。

我所要做的就是将我们客户的facebook画廊返回到两个不同的页面,托管在不同的服务器上。我在一个页面上使用这种格式:

$albums = json_decode( file_get_contents('http://graph.facebook.com/'.$facebook_ID.'/albums') );

这很好,我得到了我需要的东西。但是,在其他网站上执行此操作会给我这个错误:

"message":"An access token is required to request this resource."

如果我所做的只是请求公开图库,它真的需要访问令牌吗?为了让我更加困惑,如果我只是把它放在我的浏览器中:

http://graph.facebook.com/$facebook_ID/albums

我得到了所有必需的信息。这让我觉得它不是一个域名问题?

谢谢!

---编辑---

以下是curl的更多信息。

首先 - 从我的本地方框中可以使用的请求:

* About to connect() to graph.facebook.com port 80 (#0)
*   Trying 69.171.242.27...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                             Dload  Upload   Total   Spent    Left  Speed
^M  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0* Connected to graph.facebook.com (69.171.242.27) port 80 (#0)

> GET /370438539411/albums HTTP/1.1

> User-Agent: curl/7.29.0

> Host: graph.facebook.com
> Accept: */*
> 
< HTTP/1.1 200 OK
< Access-Control-Allow-Origin: *
< Cache-Control: private, no-cache, no-store, must-revalidate
< Content-Type: application/json; charset=UTF-8
< ETag: "2829e31bfef4b737cdb31aab0f73c8ad35826012"
< Expires: Sat, 01 Jan 2000 00:00:00 GMT
< Pragma: no-cache
< X-FB-Rev: 801567
< X-FB-Debug: /uN6PrzpTWLLaJOn8vuww0ECYjineJN6P9w/DvvVczY=
< Date: Wed, 01 May 2013 12:01:26 GMT
< Connection: keep-alive
< Content-Length: 35483
< 
ALL THE THINGS

然后这是来自我们的实时服务器的请求 - 一个EC2实例(如果这是相关的)

* About to connect() to graph.facebook.com port 80 (#0)
*   Trying 173.252.101.26...   % Total    % Received % Xferd  Average Speed   Time    Time         Time  Current
                             Dload  Upload   Total   Spent    Left  Speed
^M  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0connected
* Connected to graph.facebook.com (173.252.101.26) port 80 (#0)
> GET /370438539411/albums HTTP/1.1
> User-Agent: curl/7.29.0
> Host: graph.facebook.com
> Accept: */*
> 
< HTTP/1.1 400 Bad Request
< Access-Control-Allow-Origin: *
< Cache-Control: no-store
< Content-Type: application/json; charset=UTF-8
< Expires: Sat, 01 Jan 2000 00:00:00 GMT
< Pragma: no-cache
< WWW-Authenticate: OAuth "Facebook Platform" "invalid_token" "An access token is required     to request this resource."
< X-FB-Rev: 801567
< X-FB-Debug: wSxKF5MlCAmEFf2BuYRBDotWWreR6/t5m5mebc8vDXw=
< Date: Wed, 01 May 2013 12:03:38 GMT
< Connection: keep-alive
< Content-Length: 112
< 
^M  0   112    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0{ [data not shown]
^M100   112  100   112    0     0    181      0 --:--:-- --:--:-- --:--:--   212
* Connection #0 to host graph.facebook.com left intact
* Closing connection #0
{"error":{"message":"An access token is required to request this resource.","type":"OAuthException","code":104}}
(END)

1 个答案:

答案 0 :(得分:1)

可能存在某些或其他可能影响或破坏对公共数据的访问的内容,就像您访问时一样。正如您已经体验到的那样,我希望您能够安全地使用此功能,而是创建一个应用并使用 App Access Token 来查询公共数据,而不是直接将其作为Facebook可能在不久的将来甚至改变这个..