我是第一次在客户端网站上使用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调用获取应用程序的令牌,并成功获得令牌。如果我使用它作为令牌,我将无法再使用图形资源管理器中的临时令牌查看数据。
我不希望用户只是为了查看网站上的照片库而必须登录。
如何获取允许我这样做的应用令牌?
感谢。