我正在尝试获取Facebook页面事件。我已经检查了应用程序id和应用程序机密是否正确,但我仍然不断收到错误。
<?php
ini_set('display_startup_errors',1);
ini_set('display_errors',1);
error_reporting(-1);
ob_start();
require 'facebook/src/facebook.php';
$fb = new Facebook(array(
'appid'=>'APPID',
'secret'=>'APPSECRET'
) );
$page_events = $fb->api('/PAGEID/events?fields=description,location,name,owner,cover,start_time,end_time', 'GET');
printf ('<pre>%s</pre>', $page_events);
?>
错误消息:
未捕获的OAuthException:无效的OAuth访问令牌签名。在中抛出
我不确定你是否实现了,但你的代码丢失了-
-
用户登录/身份验证
代码未对用户进行身份验证。在创建
$fb
对象之后;使用这个-$user_id = $fb->getUser(); if($user_id) { try { // proceed your api calls - user is authenticated at this point } catch(FacebookApiException $e) { $login_url = $fb->getLoginUrl(array( 'scope' => 'manage_pages')); header ("Location: $login_url"); error_log($e->getType()); error_log($e->getMessage()); } } else { $login_url = $fb->getLoginUrl(array( 'scope' => 'manage_pages')); header ("Location: $login_url"); }
-
权限
文件上写着-
对于页面事件-
- 任何访问令牌都可以用于查看公共共享事件
- 检索该人员可见的事件需要
user access token
- 检索任何其他事件都需要
page access token
我认为您正在尝试获取页面中的所有事件,因此需要页面访问令牌。
获取页面访问令牌:
$fb->api("/PAGE_ID?fields=access_token");
。使用令牌返回与您的原始调用来获取页面的所有事件-$page_events = $fb->api('/PAGEID/events?access_token='.$page_access_token.'&fields=description,location,name,owner,cover,start_time,end_time', 'GET');
(如果需要,您还可以为页面获取永不过期的页面令牌:请参阅此处)