如何在 php 中访问受保护的 json 数组


How to access a protected json array in php

我正在使用 facebook sdk for php。它返回了一个我无法使用的受保护的 json 数组。是否可以有另一种使用受保护阵列的方法。这是我的代码:

<?php
  require 'phpInsight-master/autoload.php';
  require_once 'autoload.php';
  use Facebook'FacebookSession;
  use Facebook'FacebookRedirectLoginHelper;
  use Facebook'FacebookRequest;
  use Facebook'FacebookResponse;
  use Facebook'FacebookSDKException;
  use Facebook'FacebookRequestException;
  use Facebook'FacebookAuthorizationException;
  use Facebook'GraphObject;
  use Facebook'Entities'AccessToken;
  use Facebook'HttpClients'FacebookCurlHttpClient;
  use Facebook'HttpClients'FacebookHttpable;
  $sentiment = new PHPInsight'Sentiment();
  FacebookSession::setDefaultApplication('APP ID', 'APP SECRET');
  /*$helper = new FacebookRedirectLoginHelper('http://123.63.13.117/');
  try
  {
    $session = $helper->getSessionFromRedirect();
  }
  catch(FacebookRequestException $e)
  {
    echo 'Failure: ' . $e->getMessage();
  }
  catch(Exception $e)
  {
    echo 'Failure: ' . $e->getMessage();
  }
  */
  $raw_id = $_GET['id'];
  $id = '/' . $raw_id;
  echo $id;
  $session = new FacebookSession('ACCESS TOKEN');
  if(isset($session))
  {
    $request = new FacebookRequest($session, 'GET', '/me');
    $response = $request->execute();
    $graphObj = $response = $response->getGraphObject();
    echo '<pre>';
     var_dump($graphObj);
    echo '</pre>';
    $bio = $graphObj->backingData->bio;
    $sentu = $sentiment->categorise($bio);
  }
  else
  {
    echo '<a href="' . $helper->getLoginUrl() . '"> Login: </a>';
  }
?>

$bio行上显示:

Fatal error: Cannot access protected property Facebook'GraphObject::$backingData 
in C:'xampp'htdocs'facebook'facebook-php-sdk-v4-4.0-dev'facebook.php on line 50

您尝试访问的属性$backingData受到保护,这意味着您无法直接访问它。要获取它,请从以下位置更改代码:

$bio = $graphObj->backingData->bio;

自:

$bio = $graphObj->getProperty('bio');
// Or, if you need the whole array:
$data = $graphObj->asArray()
$bio = $data['bio'];

阅读对象中的属性可见性可能是个好主意。