简体   繁体   English

如何在PHP中访问受保护的JSON数组

[英]How to access a protected json array in php

I am using the facebook sdk for php. 我正在为PHP使用Facebook SDK。 And it is returning a protected json array which I cannot use. 它返回一个我无法使用的受保护的json数组。 Can There Be Another Way of using the protected array. 可以使用保护数组吗?
This is My Code: 这是我的代码:

<?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>';
  }
?>

And On the line of $bio it shows : $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

The property you're try to access $backingData is protected, which means you can't access it directly. 您尝试访问$ backingData的属性受到保护,这意味着您无法直接访问它。 To get it change your code from: 要获取它,请从以下位置更改代码:

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

to: 至:

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

It might be a good idea to read up on property visibility in objects . 阅读对象的属性可见性可能是一个好主意。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM