我有一个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
答案 0 :(得分:1)
为了访问用户信息,您将需要该用户的有效访问令牌。应用程序访问令牌不能用于代表用户执行任何操作。
访问令牌会在一段时间后过期,这会阻止应用程序在用户实际不使用该应用程序时搜索用户信息。
如果您想要一路走下去 - 只需从相册中下载所有照片并将其存储在您的服务器上......如果您不能这样做,那么您将不得不考虑扩展相册所有者的访问权限令牌,以便您在查询其专辑时可以使用它。就应用程序而言,使用该扩展访问令牌实际上是发出请求的相册所有者。
扩展客户端用户访问令牌
当一个人完成客户端身份验证流程并检索他们的身份时 用户访问令牌,默认情况下,令牌仅对一到两个有效 小时。
您可以将此令牌换成有效期较长的有效期 将它从服务器传递到/ 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此端点的响应将包括长期访问令牌。这将是一个 不同的字符串到原始令牌,所以如果你存储这些 代币,替换旧的。
基本上,只要任何(注册)用户执行成功登录并将令牌存储在您的数据库中,您就必须这样做。