我第一次在客户站点中使用 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 调用获取应用程序的令牌,并成功取回了令牌。但是,如果我将其用作令牌,我将无法再看到从图形浏览器中使用临时令牌获得的数据。
我不希望用户必须登录才能看到网站上的照片库。
我该如何去获取允许我执行此操作的应用程序的令牌?
谢谢。