【问题标题】:Uploading photos to a Facebook Page as the Page itself, programmatically in PHP在 PHP 中以编程方式将照片作为页面本身上传到 Facebook 页面
【发布时间】:2012-06-18 13:45:19
【问题描述】:

背景

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

我尝试过的

使用这个简单的代码,我成功上传了图片,但是它被张贴在我的自己的墙上,在我的自己的相册中,在我的自己的 名称,而不是 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'] 是从 Graph API Explorer 生成的,使用范围 manage_pagespublish_streamphoto_uploadoffline_access (3)
    • 作为对潜在未来访问者的附注,事实证明我生成了一个用户访问令牌而不是页面访问令牌,这就是它被张贴在我自己的墙上,在我自己的相册中的原因。
  • $config['facebook_pageId'] 是页面的 ID(我也使用 Graph API Explorer 找到)
  • 成功完成后,$data 包含图像的 ID 和墙上的帖子(?)似乎

问题总结

  1. 如何将照片作为 Facebook 主页本身发布到 Facebook 主页?
  2. 这适用于开发人员来来往往的项目。有没有办法让我拥有一个独立于特定 Facebook 用户的 不可变 页面访问令牌 OR 依赖于(虚拟)Facebook 应用 OR以某种方式即时生成一个?
  3. 我如何(如果需要)作为 Facebook 主页进行身份验证 - 以 PHP 编程方式给我一个主页访问令牌?

代码示例或指向简洁文档和/或教程的链接(最好带有示例)将不胜感激。

【问题讨论】:

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


    【解决方案1】:

    这三个问题的答案是:

    • 让作为页面管理员的用户授予您的应用manage_pagespermission

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

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

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

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

    【讨论】:

    • 很好的答案,将查看链接。但是,Facebook 主页是否可以授予 Facebook 应用所需的权限?在确保应用程序拥有所需的访问权限时,我仍然渴望做最少的工作,而与 Facebook 页面本身的所有者无关。
    • 一个“页面”本身并没有授予任何东西,该页面的管理员之一授予您的应用程序权限,然后您获得一个 access_token 代表该页面行事;实际上这是一回事,其中一位管理员将始终必须将他们对页面的控制权委托给您的应用程序
    • 抱歉,我的表述不清楚,我的意思是:页面管理员有没有办法在 Facebook 页面上授予 Facebook 应用程序photo_uploadpublish_stream,而 Facebook 应用程序不会失去这些权限当页面管理员被删除(替换)?还是所有相册管理都必须通过 Facebook 用户(非常数)来完成?在我看来,这似乎鼓励制作虚假帐户(但在 TOS 中可能不允许),然后在页面上授予他们管理员权限,并使用它们来创建页面访问令牌。我可以使用测试用户来实现这一点吗?感谢您的时间。
    • 所有页面都有管理员,这些管理员授予应用程序访问权限以代表他们作为管理员行事,包括模拟(即发布为)页面 - 如果该页面管理员被删除,您将需要一个其他管理员授权您的应用程序 - 这是故意的,没有不涉及(如您所说)使用页面的假管理员的解决方法,但我不明白为什么这与使用真实管理员有什么不同
    • 我认为您大大高估了页面管理员更改的频率
    猜你喜欢
    • 1970-01-01
    • 2014-03-03
    • 2012-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多