質問

A user has accepted my Facebook app. I can now access some of their data. It is returned as a graphObject, which contains something like:

Facebook\GraphObject Object ( [backingData:protected] => Array ( [id] => 11111 [first_name] => Bob [gender] => male [last_name] => Builder [link] => https://www.facebook.com/app_scoped_user_id/11111/ [locale] => de_DE [name] => Bob Builder [timezone] => 2 [updated_time] => 2014-02-14T14:35:54+0000 [verified] => 1 ) )

Unfortunately I cannot get at the data inside this object. Reading it like an array throws an error:

$fbid = $graphObject['id']; // Cannot use object of type Facebook\GraphObject as array
$fbid = $graphObject->id; //  Undefined property: Facebook\GraphObject::$id

How can I get at the ID?

役に立ちましたか?

解決

If you have casted the response as a GraphObject by using one of the following two methods:

// Get the response typed as a GraphLocation
$loc = $response->getGraphObject(GraphLocation::className());

// or convert the base object previously accessed
// $loc = $object->cast(GraphLocation::className());

You can use the Get properties of the graph object, depending on what kind of object you've casted it as... here's an example for the GraphUser Object:

echo $user->getName();

Or, if you know the name of the property (as shown in the base data), you can use getProperty():

echo $object->getProperty('name');

So in your example, you can use the following to get the id property:

echo $user->getProperty('id');

More examples and documentation here

他のヒント

In the New version of Graph API getProperty does not work. For the New version Graph API v2.5 of Facebook Read read data as below :

$fb = new \Facebook\Facebook([
        'app_id' => 'APPIDHERE',
        'app_secret' => 'SECRET HERE',
        'default_graph_version' => 'v2.5',
    ]);
 $asscee_t ="ACCESS TOKEN HERE";
    $response = $fb->get('/me/friends', $asscee_t);
        $get_data = $response->getDecodedBody(); // for Array resonse
        //$get_data = $response->getDecodedBody(); // For Json format result only
        echo $get_data['summary']['total_count']; die; // Get total number of Friends

Note that from API version >= 5.0.0 getProperty() has been renamed to getField(). It will be removed from >= v6. So

Instead of

$user->getProperty('name')

Use

$user->getField('name')
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top