我正在为已经在Facebook上拥有他的产品照片的客户开发一个网站,他希望在他的网站上复制相同的相册。我已经在使用Facebook Connect,因此我删除了photos.getAlbums
和photos.get
的组合来动态制作图库。
到目前为止一直很好,但后来我意识到,如果没有用户通过FBC登录,则不会创建任何会话,并且API也会变得无法使用,即使对于公开可用的内容也是如此。我显然希望向所有人展示专辑,而不仅仅是连接他们帐户的人。
这就是Facebook API中所有功能的运作方式吗?这种情况的最佳(更容易实施)解决方法是什么?
答案 0 :(得分:11)
截至2010年9月,您现在可以作为应用程序进行身份验证,而无需关联用户。有关详细信息,请参阅http://developers.facebook.com/docs/authentication/。或者,您可以运行此示例代码以获取访问令牌:
curl -F grant_type=client_credentials \
-F client_id=your_app_id \
-F client_secret=your_app_secret \
https://graph.facebook.com/oauth/access_token
答案 1 :(得分:3)
为了记录,我设法通过开发一个小后端来解决这种情况,该后端要求客户端登录到Facebook并将offline_access
extended permission提供给FB应用程序,这样我就可以保存他的会话密钥,并在每次我需要使用FQL获取非公开内容时使用它来验证Facebook API客户端。
显然可以在中间增加一些缓存,以避免对Facebook提出不必要的请求,但它已经好几个月了,但没有达到我所知道的任何限制。
答案 2 :(得分:0)
这对我没有意义 - 我有一个(相对简单的)应用程序,即使用户之前从未登录过Facebook,也会在Facebook中呈现(在这种情况下,它会显示演示数据)。
使用facebook PHP库时,我只是这样做:
$ facebook =新Facebook($ api_key,$ secret);
不需要会话ID - 但显然,依赖于用户信息的api函数不起作用。
您还可以查看应用的"infinite session" - 您可以为自己创建无限会话密钥,并使用该会话访问API。