【发布时间】:2018-02-16 15:33:05
【问题描述】:
这是一个让我疯狂数周的问题!
一年多以来,我在我的 2 个 facebook 页面上自动发布了我网站上的文章,直接在墙上(主流?)。它就像一个魅力。 但是,从 3 月份开始,这些出版物已经转移到 Publication->Visitor Publication (抱歉翻译,但我的 FB 是法语),所以它们几乎不可见!
您知道关于在页面上发布的 FB 政策是否发生了变化?我知道我使用的是旧的 PHP SDK (3.1.1),但我无法更新,因为我的服务器没有 PHP 5.6 !但是我觉得如果是 SDK 版本问题,那么发布将是根本不可能的......
从技术上讲,我的网络服务器上的一个 cron 任务使用我的 FB 应用程序 ID 和密码发送请求,并使用我的个人访问令牌进行发布。因为我是具有“manage_pages,publish_actions”权限的页面的管理员,所以没有问题。 我阅读了一些关于“publish_pages”的主题,但要使用它,您需要将您的应用程序提交到 FB 进行验证。 https://stackoverflow.com/a/32143270/985357
FB 支持有一个页面解释了用户和页面访问令牌之间的区别。但目前还不清楚: https://developers.facebook.com/docs/facebook-login/access-tokens#pagetokens
我还尝试在https://developers.facebook.com/tools/explorer 中获取我的一个页面的访问令牌,但是当我尝试使用它时,我得到了“(#200)用户尚未授权应用程序执行此操作”。
这是我的代码:
require_once dirname(__DIR__).'/include/facebook/facebook.php'; //facebook SDK
$this->oFB = new Facebook(array(
'appId' => self::FACEBOOK_APP_ID,
'secret' => self::FACEBOOK_SECRET, 'cookie' => true));
//then
$this->oFB->api('/{MyPageId}/feed', 'post',$this->FB_params);
//with FB_params populate:
$FB_params= array('access_token' => self::FACEBOOK_ACCESS_TOKEN_PERSO,
'from' => self::FACEBOOK_APP_ID) ;
//... and ....
$FB_params['to'] = $FB::FACEBOOK_MY_PAGEID ;
$FB_params['message'] = "blabla....." ;
$FB_params['link'] = "url..." ;
/*the way I use to get my FACEBOOK_ACCESS_TOKEN_PERSO:
1- hit :
"https://www.facebook.com/dialog/oauth?client_id=".FACEBOOK_APP_ID."&redirect_uri=http://www.website.com/token.php&scope=manage_pages,publish_actions"
2- hit : https://graph.facebook.com/oauth/access_token?client_id=".FACEBOOK_APP_ID."&redirect_uri=http://www.website.com/token.php&client_secret=".FACEBOOK_SECRET."&code=".$_GET['code']
3- access token-> $_GET['access_token']
*/
最后一个问题:最初我现在有一个无限制的访问令牌,使用相同的方法,时间限制为 2 个月。也是FB政策的变化吗?
很抱歉这篇冗长的帖子,但我希望您能理解我在网上搜索了很长时间而没有任何解决方案。 谢谢!
【问题讨论】:
-
您现在可能正在使用用户令牌而不是页面令牌。调试令牌。
-
是的,您需要 publish_pages 权限,不,您不需要提交您的应用进行审核。 developers.facebook.com/docs/apps/faq#faq_180362122361921
-
luschn :是的,我一直使用用户令牌并且它有效。但感谢CBroe,我终于明白了!事实上,当您有 FB 屏幕说明您必须要求审查时,请单击右下角的 OK。它会起作用的!但是您需要为要发布的每个页面获取页面访问令牌 (ATP)。存储它们以便 PHP 可以在您的脚本想要发布您的最新消息时使用它们。我唯一不确定的是 ATP 有四个到期日吗?随着您的用户令牌过期,我假设 ATP 也过期。非常感谢!!!!
标签: php facebook facebook-graph-api oauth access-token