我试图让用户在我的网站上将图片发布到特定Facebook页面上的相册中。 在他能够在他的计算机上选择图像之前,他需要在Facebook上登录并且必须已经为我们的应用程序提供所需的权利(随意流程)
要将所选图像发布到我们网页的相册,我们需要一个访问令牌,以便我们拥有执行此操作的权限。 我们可以通过执行以下步骤手动获取权限:
导航到以网页管理员身份登录的网址,并授予权限(user_photos,manage_pages,offline_access,publish_stream)
https://www.facebook.com/dialog/oauth?
client_id=<application_id>
&redirect_uri=<canvas_url>
&response_type=token
&scope=user_photos,manage_pages,offline_access,publish_stream
当您为应用程序提供所需的权限时,您将被重定向到canvas_url#access_token = * access_token *,例如
http://example.com/#access_token=awe12
然后导航到
https://graph.facebook.com/me/accounts?access_token=#access_token
(using the access token from 2).
这将列出您管理的页面;记下要上传图像的页面的access_token
现在,有没有办法自动完成这项工作? 或者更好的是,有没有办法为这个页面生成一个永不过期的访问令牌?
答案 0 :(得分:1)
您不必使用该网页的access_token即可发布到相册页面。如果您使用该页面的access_token,那么该图像将显示为由页面发送(而不是由用户发送)。
只要相册具有公共访问权限(意味着任何人都可以将照片上传到页面的相册)。您只需要让用户授予您publish_stream
权限,并使用access_token上传图片。
如果您使用PHP Sdk,它应该看起来像这样:
$facebook->api("ALBUM_ID/photos","POST",array(
"message"=>"some message",
"source"=>"@PATH_TO_IMAGE"
));
当然,您需要在$facebook
对象中启用imageUpload,并将脚本传递给signed_request
或设置access_token
,以便SDK使用当前用户的access_token。