1

我第一次在客户站点中使用 Facebook 的 PHP sdk,我有点困惑。我正在尝试从客户的 Facebook 页面获取一些数据并将其注入他们的网站。我试图获取的对象之一是照片库的客户相册列表。

<?php 
$albums = $Facebook->api("/169639127532/albums?fields=id,name,cover_photo");
$photos = array();
$queries = array();
foreach($albums['data'] as $album) {
    if(array_key_exists("cover_photo", $album)) 
    $queries[] = array("method" => "GET", "relative_url" =>     "/".$album['cover_photo']."?fields=source");
}

$rawPhotos = $Facebook->api('?batch='.json_encode($queries), 'POST');
foreach($rawPhotos as $photo) {
    //print_r(json_decode($photo['body'])); echo "<br /><br />";
    $photo = json_decode($photo['body']);
    $photos[$photo->id] = $photo->source;
}

如您所见,我获取了专辑列表,然后使用批处理请求获取这些专辑的所有封面照片。

使用我的客户页面 ID,这不起作用,不会返回任何内容。但是,如果我使用另一个页面的 ID,则此方法有效。

所以我把这归结为授权。我注意到,如果我使用带有访问令牌的 Graph API 浏览器,我可以获得照片。因此,我复制了使用 API 资源管理器生成的令牌,并使用以下函数在站点上全局设置它,这很有效。

$Facebook->setAccessToken($token)

显然这不是一个非常稳健的解决方案,因为令牌只存在有限的时间。我尝试使用带有我的应用程序详细信息的 /oauth/access_token API 调用获取应用程序的令牌,并成功取回了令牌。但是,如果我将其用作令牌,我将无法再看到从图形浏览器中使用临时令牌获得的数据。

我不希望用户必须登录才能看到网站上的照片库。

我该如何去获取允许我执行此操作的应用程序的令牌?

谢谢。

4

0 回答 0