正在获取相册封面照片


Fetching album cover photo

我在PHP上使用Graph Api为用户获取相册。

当我展示它们时,我还想展示每张专辑的封面照片。我确实在每个相册中获得了[cover_photo]属性,但我希望显示该图片,而不必为每个照片发出新的请求来获得所有照片的source URL。

有办法做到这一点吗?

我试着(但没有成功)通过以下操作获取照片:

<img src="//graph.facebook.com/<?=$album['id'] ?>/picture">

我读了一篇关于它的帖子,其中的解决方案是:

https://graph.facebook.com/<id>/picture?type=album&access_token=<token>

但我不能只是把access_token公开地放在img src中。。。我可以吗?

你这样做是非常认真的。但您不必担心,因为任何使用访问令牌的图形api调用都会自动要求请求为https。

另一种方法:你可以在脚本结束时注销你的facebook会话,这将使访问令牌无效。

与此相关的是,脸书并没有提到这是一个安全风险。他们遇到了访问令牌泄露的问题,原因是在HTTP请求中包含了访问令牌,而且没有使用HTTPS。这两个洞都是固定的,并且非到期代币也被移除了。https://developers.facebook.com/blog/post/497/

这是一篇很好的文章,解释了自Facebook切换到Oauth 2.0以来访问令牌的安全性http://www.sociallipstick.com/?p=239

如果您将access_token公开,您需要采取预防措施,以免用户在不知情的情况下将其交给其他人。

确保你的应用程序通过HTTPS进行通信,否则,如果你的用户在公共wifi上浏览你的网站,有人可能会窥探你的流量并获取access_token。黑客攻击与Firesheep的工作方式相似。

如果恶意的第三方获得了用户的access_token,他可以通过请求来查询Facebook,就好像他是你的应用程序一样。如果你的应用程序拥有publish_stream或manage_friendslists权限,这可能会变得非常糟糕。

只要您的用户意识到这一点,就没问题。你最不希望用户拥有的是你的应用程序的密钥。在认证过程中,您的应用程序告诉用户的浏览器转到Facebook并返回"代码"。然后,你的服务器直接连接到facebook(用户的浏览器不知道),并将代码与应用程序的密钥一起发送。Facebook带着访问令牌返回到您的服务器。