繁体   English   中英

无需登录即可从Facebook图形API检索照片

[英]Retrieve photos from facebook graph api without login

我有一个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周,但似乎没有任何效果。 我尝试不登录,尝试使用应用访问令牌,尝试过:

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

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

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

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

取自Facebook文档

扩展客户端用户访问令牌

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

您可以通过使用fb_exchange_token的grant_type参数将令牌从服务器传递到/ oauth端点,从而将该令牌交换为有效期最长为60天的令牌。 [请注意,必须从服务器发送它,这样才不会暴露App Secret。]如下所示:

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

来自此端点的响应将包含长期访问令牌。 这将是与原始令牌不同的字符串,因此,如果要存储这些令牌,请替换旧令牌。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM