我一直在尝试了几天,现在成功地发布到他们的网站客户端的Facebook页面墙时200。我需要能够做到这一点,而无需登录的用户,这点我是能够实现与要在文档中提供的URL生成扩展的访问令牌。Facebook的PHP SDK - 错误#试图用setExtendedAccessToken
我所试图做的是使用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
由图形生成的身份验证令牌的调试API资源管理器显示自己的用户,包括必要的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
}
UPDATE 我发现,如果我呼应的getAccessToken()
输出端的结果是应用程序ID,并通过|
分离的秘密 - 这是我应该接受的吗?对我来说似乎很奇怪,因为我看到的所有其他代币都是随机的,而且更长。
任何帮助都将不胜感激,我至今浪费在这那么多时间。它似乎只适用于其他人。
UPDATE 2 嗨,沃伦!看起来你是这些零件的新手,欢迎!感谢您对此的研究,是否需要将这些标记保存到数据库表中,并检查每次尝试发布时它们是否已过期?我只是张贴到页面的页面,显然这需要在页面access_token
而不是什么我假设是用户access_token
。我相信我也会在某处阅读页面访问令牌永不过期,但如果我刷新Graph API Explorer页面或请求新的用户令牌,它将发生变化。十分不解..不知道是不是我甚至需要处理在此应用程序获得新令牌或只使用一个页面access_token
出现工作?
嗨我没有答案,因为我太寻找相同的解决方案。我发现这使我觉得现在不可能。 https://developers.facebook.com/roadmap/offline-access-removal/如果用户已经登录,我可以得到这个工作,但是如果你需要确保它在用户注销时工作。 –