将图像发布到预定义页面上的相册

时间:2012-02-24 12:29:56

标签: php facebook facebook-graph-api facebook-apps facebook-page

我试图让用户在我的网站上将图片发布到特定Facebook页面上的相册中。 在他能够在他的计算机上选择图像之前,他需要在Facebook上登录并且必须已经为我们的应用程序提供所需的权利(随意流程)

要将所选图像发布到我们网页的相册,我们需要一个访问令牌,以便我们拥有执行此操作的权限。 我们可以通过执行以下步骤手动获取权限:

  1. 导航到以网页管理员身份登录的网址,并授予权限(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
    
  2. 当您为应用程序提供所需的权限时,您将被重定向到canvas_url#access_token = * access_token *,例如

    http://example.com/#access_token=awe12
    
  3. 然后导航到

    https://graph.facebook.com/me/accounts?access_token=#access_token
    (using the access token from 2). 
    

    这将列出您管理的页面;记下要上传图像的页面的access_token

  4. 现在,有没有办法自动完成这项工作? 或者更好的是,有没有办法为这个页面生成一个永不过期的访问令牌?

1 个答案:

答案 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。