如何访问 php 中受保护的 json 数组
How to access a protected json array in php
我正在为 php 使用 facebook sdk。它正在返回一个我无法使用的受保护 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'];
阅读 property visibility in objects 可能是个好主意。
我正在为 php 使用 facebook sdk。它正在返回一个我无法使用的受保护 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'];
阅读 property visibility in objects 可能是个好主意。