几天来,我一直在尝试从他们的网站成功地发布到客户的 Facebook 页面墙上。我需要能够在没有用户登录的情况下执行此操作,我可以通过转到文档中提供的 URL 生成的扩展访问令牌来实现这一点。
我想要做的是使用 PHP SDK 获取扩展令牌,如在这个问题中 - Facebook PHP SDK: getting "long-lived" access token now that "offline_access" is deprecated,但是我收到以下错误:
(#200) The user hasn't authorized the application to perform this action
Graph API Explorer 生成的身份验证令牌的调试将我自己显示为用户,并包括所需的manage_pages
和status_update
范围。但是,如果我运行me/accounts
,则perms
数组不会在相关页面的数据下列出这些 - 不确定这是否相关。
这是我尝试使用的代码:
$facebook = new Facebook(array('appId' => 'xxxxxxx', 'secret' => 'xxxxxx'));
$pageID = 'xxxxxxxx';
$facebook->setExtendedAccessToken();
$accessToken = $facebook->getAccessToken();
try {
$page_info = $facebook->api("/$pageID?fields=access_token");
print_r ($page_info);
} catch (FacebookApiException $e) {
echo $e->getMessage();
}
if( !empty($accessToken) ) {
$args = array(
'access_token' => $accessToken,
'message' => "Catch phrase!"
);
$facebook->api("/$pageID/feed","post",$args);
} else {
// Handle error
}
更新
我发现如果我回显getAccessToken()
结果的输出是应用程序 ID 和由 an 分隔的秘密|
- 这是我应该收到的吗?对我来说似乎很奇怪,因为我看到的所有其他令牌都是随机的并且更长。
任何帮助都将不胜感激,到目前为止,我已经浪费了很多时间。它似乎对其他人有用。
更新 2
嗨,沃伦!看起来你是这些部分的新手,欢迎!感谢您对此的研究,我是否需要将这些令牌保存到数据库表中并在每次尝试发布时检查它们是否已过期?我只是作为 Page 发布到 Page ,显然这需要 Pageaccess_token
而不是我假设的 USER access_token
。我相信我还在某处读到页面访问令牌永不过期,尽管如果我刷新 Graph API Explorer 页面或请求新的用户令牌,它会发生变化。非常令人费解.. 不知道我是否需要处理在这个应用程序中获取新令牌,或者只是使用一个access_token
看起来可以工作的页面?