我开发了一个ASP.NET网站。它将包含文本文章,其中一些将包含我的Facebook帐户上面和文本之外的图片。请注意,我将仅使用我帐户中的公开相册。
所以我创建了一个sql表,并绑定了articles
,albums
和photos
(实际上是所有这些的IDs
)。我已经使用了facebook api sdk,这是一个很棒的库。
显然,我的网站上的任何访问者(即使他没有Facebook帐户)也可以看到文章和图片,并且访问facebook和未经身份验证通过facebook oAuth
访问它们。
以下是问题:
1)如何在album id
和user id
未经身份验证的情况下获取公开相册所包含的照片? (我不知道,也许我应该使用除专辑ID和用户ID之外的其他参数)
2)如何获取公开相册的属性(名称,ID等)?
答案 0 :(得分:2)
要检索用户相册列表,您需要向Graph API发出下一个GET请求:
https://graph.facebook.com/me/albums?access_token=...
并检索照片列表:
https://graph.facebook.com/ALBUM_ID?access_token=...
但是,如果没有身份验证并请求user_photos
权限,您就无法阅读用户的相册(和照片)。
根据album
文件:
要阅读您需要的相册
因此,通常您只有两个选项来实现您想要的结果:
access_token
读取它们。user_photos
权限access_token
为您的用户存储access_token
访问您的相册/照片答案 1 :(得分:2)
没有访问令牌,你可以从图表api中获得很少的东西。
只需将浏览器定位到:http://graph.facebook.com/YOU_USER_ID
即可自行尝试。
您还可以检查User object documentation中的字段/连接表,在权限列(第3个)中显示“无需access_token”,您可以获得令牌。
如果您想获取自己的其他数据并在您的网站上公开发布,您有两种选择:
使用server-side authentication flow,获取长期访问令牌(60天),保存并在接下来的60天内使用它来从Facebook获取数据。 然后,当它过期时再次通过身份验证过程。 只有你需要经历它,而不是你的用户,而且每60天只需要一次。
登录自己,针对您的应用进行身份验证,获取所有数据并将其保留在您的数据库中,然后将其呈现给您的用户。 你需要每隔一段时间更新一次。
服务器端认证流程指南有一个用php编写的例子。 这是一个简单的例子,它并未涵盖所有场景,但它是一个良好的开端。
我已经在python和java中实现了这个,但它不是可以轻松共享的东西,因为它跨越多个请求和状态,所以我只是描述我认为你应该使用的流程:
这应该是一个长期存在的访问令牌,你可以使用它60天。
至于在你自己的数据库上保存你的fb数据,在数据库上保存数据是一项非常简单的操作,这完全取决于你想要保存的数据,你需要如何编码/使用它(json,xml) ,纯文本)。
例如,假设您希望显示自己的照片,然后在获得令牌后(如上所述),只需向您的服务器查询您的照片,即可向https://graph.facebook.com/me/photos?access_token=XXXXXX
发出http请求。
你应该得到一个json编码的结果,迭代它并将每张图片保存为你的数据库中的记录。