将照片作为页面本身上传到Facebook页面,以PHP编程方式

时间:2012-06-18 13:45:20

标签: php facebook facebook-graph-api facebook-php-sdk image-uploading

背景

我在查找如何以编程方式将照片发布到Facebook Page时遇到了一些麻烦。我已阅读Facebook Documentation on Authenticating as a Page,但all the examples involve Facebook Users。到目前为止,我刚刚使用Facebook的Graph API Explorer手动生成了所需的访问令牌。 <子>(3)

我尝试了什么

使用这个简单的代码,我成功上传了图片,但是我的拥有墙上,拥有相册中的拥有< / strong>名称,而不是 Facebook页面上的 Facebook页面的专辑,位于 Facebook页面的名称下。我需要将其发布到特定的 Facebook页面作为 Facebook页面本身。 <子>(1)

<?php
require 'facebook-php-sdk/src/facebook.php';
require 'config.php';

$facebook = new Facebook(array(
    'appId' => $config['facebook_appId'],
    'secret' => $config['facebook_appSecret'],
    'fileUpload' => true
));

$facebook->setAccessToken($config['facebook_pageAccessToken']);

$args = array(
    'message' => 'Facebook API test',
    'source' => '@'.realpath(__DIR__.'/404.jpg')
);

$data = $facebook->api('/'.$config['facebook_pageId'].'/photos', 'post', $args);

关于代码

  • $config['facebook_appId']来自我创建的虚拟测试应用
  • $config['facebook_appSecret']来自我创建的虚拟测试应用
  • $config['facebook_pageAccessToken']使用范围manage_pagespublish_streamphoto_uploadoffline_access (3)<Graph API Explorer生成/子>
    • 作为对潜在未来访问者的旁注,事实证明我生成了一个用户访问令牌而不是页面访问令牌,这就是它在我自己的墙上张贴在我自己的专辑中的原因。
  • $config['facebook_pageId']是页面的ID(我也使用Graph API Explorer找到了这个)
  • 成功完成后$data包含图片的ID和墙贴(?)似乎

问题摘要

  1. 如何将照片作为Facebook页面本身发布到Facebook页面?
  2. 这是一个开发人员来来往往的项目。有没有办法让我拥有独立于特定Facebook用户的不可变页面访问令牌依赖于(虚拟)Facebook应用以某种方式在飞行中生成一个?
  3. 我如何(如有必要)作为Facebook页面进行身份验证 - 以PHP编程方式为我提供页面访问令牌?
  4. 代码示例或指向简明文档和/或教程的链接最好带有示例。非常感谢。

1 个答案:

答案 0 :(得分:7)

这三个人的答案是:

  • 让作为该网页管理员的用户授予您的应用manage_pages permission

  • 如果您使用此客户端(即Javascript SDK),则需要使用https://developers.facebook.com/roadmap/offline-access-removal/方案4 的说明扩展其访问令牌

  • 通过致电access_token或致电/me/permissions,检索网页的/[PAGE_ID]/?fields=access_token。如果您在检索页面访问令牌之前扩展了页面管理员的access_token,则页面访问令牌将不会过期,除非用户不再是该页面的管理员或更改其密码,撤消对该应用程序的权限等(上述文档中的方案5) )

  • 使用该访问令牌将照片上传到页面墙。

我认为这些步骤大部分都在此澄清:https://developers.facebook.com/docs/authentication/pages/(以网页登录)或Page documentation