Facebook事件图不起作用


Facebook events graph not working

我正在尝试获取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访问令牌签名。在中抛出

我不确定你是否实现了,但你的代码丢失了-

  1. 用户登录/身份验证

    代码未对用户进行身份验证。在创建$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");
    }
    
  2. 权限

    文件上写着-

    对于页面事件-

    • 任何访问令牌都可以用于查看公共共享事件
    • 检索该人员可见的事件需要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');
    

(如果需要,您还可以为页面获取永不过期的页面令牌:请参阅此处)