【问题标题】:Post image to an album on a predefined page将图像发布到预定义页面上的相册
【发布时间】:2012-03-14 21:45:34
【问题描述】:

我试图让用户将我网站上的图片发布到特定 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

现在,有没有办法自动执行此操作? 或者更好的是,有没有办法为此页面生成一个永不过期的访问令牌?

【问题讨论】:

  • 你好。假设您拥有offline_access 权限,那么这意味着您可以随时代表用户请求访问令牌。没有没有过期日期的访问令牌,但您始终可以(在授予第一个权限后)请求您自己的访问令牌,然后自动执行所有过程。

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


【解决方案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。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-12
    • 2015-12-17
    • 2012-11-20
    • 2019-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-12
    相关资源
    最近更新 更多