2015-01-24 2 views
1

PHP 용 facebook sdk를 사용하고 있습니다. 그리고 그것은 내가 사용할 수없는 보호 된 json 배열을 반환하고 있습니다. 보호 된 배열을 사용하는 또 다른 방법이있을 수 있습니까?
이 내 코드입니다 :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의 라인에 그것을 보여줍니다

가 액세스 $backingData 시도하고있는 재산은 보호
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 

답변

4

은, 어떤 당신이 액세스 할 수 없음을 의미 그것을 직접적으로. 그것에서 코드를 변경 얻으려면 :

$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에 읽을 수있는 좋은 생각이 될 수 있습니다.

+0

고맙습니다. – Ikari

관련 문제