无需登录即可从facebook graph api中检索照片

时间:2013-04-24 21:27:38

标签: php facebook facebook-graph-api photos

我有一个php应用程序,我的注册用户登录到facebook。我使用$facebook->getLogoutUrl();。然后我将他们的所有专辑收录起来,并在HTML select标签中显示他们的ID和名字。用户选择一个,相册的ID存储在DB中。

这里一切都很好。

然后一位匿名用户访问我的网站,我希望他看到我的注册用户照片(注册用户选择的专辑的公开照片)(他们没有登录我的网站,他们没有登录Facebook)。目前只有在匿名用户登录facebook时才有效。 但即使没有登录Facebook,我也想要拍照。

$photos = $facebook->api('/'.$idAlbum.'?fields=id,name,link,photos.fields(id,picture,source)');

我已经尝试了2周,但似乎没有任何效果。我试过没有登录,我尝试过使用app访问令牌,我试过了:

https://graph.facebook.com/oauth/access_token?client_id=XXXXXX&client_secret=YYYYYY&grant_type=client_credentials

任何人都可以帮助我吗?或告诉我,如果我的应用程序无法退出相册中的照片。我搜索了一种登录我的应用程序的方法,但我只找到了应用访问令牌(https://developers.facebook.com/docs/howtos/login/login-as-app/),但正如它所说it can make requests as the app, not as a user

1 个答案:

答案 0 :(得分:1)

为了访问用户信息,您将需要该用户的有效访问令牌。应用程序访问令牌不能用于代表用户执行任何操作。

访问令牌会在一段时间后过期,这会阻止应用程序在用户实际不使用该应用程序时搜索用户信息。

如果您想要一路走下去 - 只需从相册中下载所有照片并将其存储在您的服务器上......如果您不能这样做,那么您将不得不考虑扩展相册所有者的访问权限令牌,以便您在查询其专辑时可以使用它。就应用程序而言,使用该扩展访问令牌实际上是发出请求的相册所有者。

取自Facebook docs

  

扩展客户端用户访问令牌

     

当一个人完成客户端身份验证流程并检索他们的身份时   用户访问令牌,默认情况下,令牌仅对一到两个有效   小时。

     

您可以将此令牌换成有效期较长的有效期   将它从服务器传递到/ oauth端点到60天   grant_type参数fb_exchange_token。 [注意一定是   从服务器发送,以便不暴露App Secret。]这是   看起来像这样:

https://graph.facebook.com/oauth/access_token?  
    grant_type=fb_exchange_token&           
    client_id=APP_ID&
    client_secret=APP_SECRET&
    fb_exchange_token=SHORT_LIVED_ACCESS_TOKEN
     

此端点的响应将包括长期访问令牌。这将是一个   不同的字符串到原始令牌,所以如果你存储这些   代币,替换旧的。

基本上,只要任何(注册)用户执行成功登录并将令牌存储在您的数据库中,您就必须这样做。