3

我一直在使用 facebook grap 从公共“页面”中提取相册并显示照片,但今天它停止工作(不仅在我的 PC 上,它已被其他人验证)

我一直在没有令牌和任何 SDK 的情况下使用图形 api,只是构建graph.facebook.com链接并使用返回的 json。

起初我以为问题只发生在 Chrome 上,但现在我不太确定。我已经确认欺骗用户代理没有任何效果,而且我最近发现删除 Facebook.com cookie 可以解决问题

现在,我不能强行删除其他人的 cookie,所以我想要另一个修复,或者至少是一个解释。

图调用看起来像https://graph.facebook.com/{{albumID}}

这是一个例子: https ://graph.facebook.com/203416696378870

收到错误

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

没有 facebook.com cookie,我得到了预期的输出。

"id": "203416696378870",
"from": {
   "id": "186646504722556",
   "category": "Musician/band",
   ...

Facebook Cookie 删除前

facebook.com 饼干

我仍然不明白为什么 Facebook cookie 会突然破坏我的代码。

我在 Facebook 的平台更新或 Chrome 版本中找不到任何可以解释这种行为的记录更改。

当然,我不能强行从所有使用我的代码的网站的用户那里删除 cookie,而且我对这显然使它变得多么脆弱感到不满。

有没有人对这个问题有任何额外的见解,以及 facebook.com cookie 中的具体内容与图形 api 调用有什么关系?

有没有办法防止这种情况发生?

4

4 回答 4

2

facebook询问访问令牌很奇怪,但是如果您只需要相册中的图片,这对我有用:

https://graph.facebook.com/YOUR_ALBUM_ID/photos?fields=picture&limit=500

fields=picture 语句是必须的,它才能正常工作。

你可能会发现这很有用

if (empty($_GET['album'])) {

    //get all albums of page
    $graph_url = "https://graph.facebook.com/PressPlayPrague/albums?fields=id,link,name,cover_photo&limit=500";
     $albums = json_decode(file_get_contents($graph_url));
    $counted = sizeof ($albums->data); // get the number of albums for later use

    //output all albums of given page
    for($c=0; $c<$counted; $c++){
    echo ("<div class='wrapper' <a href='?album=".$albums->data[$c]->id."'><div class='stack'><div style='width:180px; height:120px; display:inline-block; background-image:url(https://graph.facebook.com/".$albums->data[$c]->id."/picture?width=300&height=200); background-repeat:no-repeat;'>  </div></div><div class='caption'>".$albums->data[$c]->name."</div></a></div>");
    };

}else{

    //get the album pictures replace the $_GET[album] with specific ID and remove the     if clause to get only one album
    $pic_url = "https://graph.facebook.com/".$_GET[album]."/photos?fields=picture&limit=500";
    $pictures = json_decode(file_get_contents($pic_url));
    $countpic= sizeof ($pictures->data); // get the number of pics for later use
    for($p=0; $p<$countpic; $p++){
    echo ("<img style='width:250px; max-height:167px;'src='https://graph.facebook.com/".$pictures->data[$p]->id."/picture' alt='".$pictures->data[$p]->id."'>");

    };
}
?>
于 2013-04-22T00:13:15.340 回答
1

我不知道您如何尝试检索数据,但如果我使用 getJSON,它对我有用:

<a id="facebook-graph-link">TEST FACEBOOK</a>
<script>
 $(function(){
    $( "#facebook-graph-link" ).on( "click", function(e) {
        e.preventDefault();
        var url = "http://graph.facebook.com/203416696378870";
        $.getJSON( url, function( data ) {
            console.log(data);
        });
    });
 });
 </script>
于 2013-04-19T16:39:51.983 回答
0

我删除了所有 Cookie,之后我无法调用图表链接,

接下来我去 facebook 网站,切换到我的页面帐户,重新加载图形链接,它工作

但是从我的网络服务器调用脚本根本不起作用

IE10,FF20,最新的chrome,结果都一样

于 2013-04-19T22:33:47.973 回答
0

更改IP地址终于解决了所有问题,根本不知道是否需要删除cookie,但是在IP地址更改后,所有浏览器都运行良好

顺便提一句。直接调用图表链接仍然会导致有趣的事情,IE 说找不到页面,safari 誓言,Firefox 显示数据,所有网站包括相册都很好,我想用于直接图表链接的同一张相册

于 2013-04-20T11:31:48.360 回答