4

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

现在,有没有办法做到这一点automagically? 或更好,有没有办法为这个页面生成一个访问令牌,永远不会过期?

+0

你好。假设如果您具有offline_access权限,则表示您可以随时代表用户请求访问令牌。没有没有过期日期的访问令牌,但是您可以(在授予第一个权限后)请求您自己的访问令牌,然后自动执行所有过程。 – gvillavizar 2012-04-06 04:41:29

回答

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。