Trouble in facebook PHP SDK, can't make batch requests

274 Views Asked by At

I am trying to build an application that can retrieve these data from a group that I manage:

-> member's name

-> the admin who added each member

I've 3 separate files :

index.php: contains the logging using group permissions:

<?php
session_start();
require_once __DIR__ . '/autoload.php';
 $fb = new Facebook\Facebook([
  'app_id' => censored,
  'app_secret' => censored,
  'default_graph_version' => 'v2.4', // or use v2.5 latest version
  ]);
$helper = $fb->getRedirectLoginHelper();
$permissions = ['user_managed_groups']; 
$redirectUrl = 'http://localhost/test/fb/vendor/fbapp.php';
$loginUrl = $helper->getLoginUrl($redirectUrl, $permissions);
echo '<a href="' . $loginUrl . '">Log in with Facebook!</a>';
?>

fbapp.php: retrieve the Facebook Access Token.

<?php
session_start();
require_once __DIR__ . '/autoload.php';
$fb = new Facebook\Facebook([
  'app_id' => censored,
  'app_secret' => "censored",
  'default_graph_version' => 'v2.4', // or use v2.5 latest version
  ]);
helper = $fb->getRedirectLoginHelper();
try {
$accessToken = $helper->getAccessToken();
} catch(Facebook\Exceptions\FacebookResponseException $e) {
// When Graph returns an error
echo 'Graph returned an error: ' . $e->getMessage();
exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
// When validation fails or other local issues
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}
if (isset($accessToken)) {
// Logged in!
$_SESSION['facebook_access_token'] = (string) $accessToken;
echo "Logged in \n";
 $redirectUrl = 'http://localhost/test/fb/vendor/traitement.php';
echo '<a href="' . $redirectUrl . '">nextStep</a>';
// Now you can redirect to another page and use the
// access token from $_SESSION['facebook_access_token']
}
?>

traitement.php: perform graph requests (here where problems appears)

<?php
session_start();
require_once __DIR__ . '/autoload.php';
$fb = new Facebook\Facebook([
  'app_id' => censored,
  'app_secret' => "censored",
  'default_graph_version' => 'v2.4', // or use v2.5 latest version
  ]);
$accessToken = $_SESSION['facebook_access_token'];
$fb->setDefaultAccessToken($accessToken);
// Get user groups detail
$requestUserManagedGroups = $fb->request('GET', '/me/groups?fields=members,from');
//Make a batch request, this is not working, why ?
$batch = ['user-groups' => $requestUserLikes];// anyother request is not working (tried to change $requestUserLikes by other values..)
try {
$responses = $fb->sendBatchRequest($batch);
} catch(Facebook\Exceptions\FacebookResponseException $e) {
// When Graph returns an error
echo 'Graph returned an error: ' . $e->getMessage();
exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
// When validation fails or other local issues
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
foreach ($responses as $key => $response) {
if ($response->isError()) {
$e = $response->getThrownException();
echo '<p>Error! Facebook SDK Said: ' . $e->getMessage() . "\n\n";
echo '<p>Graph Said: ' . "\n\n";
var_dump($e->getResponse());
} else {
echo "<p>(" . $key . ") HTTP status code: " . $response->getHttpStatusCode() . "<br />\n";
echo "Response: " . $response->getBody() . "</p>\n\n";
echo "<hr />\n\n";
}
}
?>

I come up with this error msg:

Notice: Undefined variable: requestUserLikes in/home/yassine/srv/test/fb/vendor/traitement.php on line 20

Fatal error: Uncaught exception 'InvalidArgumentException' with message 'Argument for add() must be of type array or FacebookRequest.' in /home/yassine/srv/test/fb/vendor/facebook/php-sdk-v4/src/Facebook/FacebookBatchRequest.php:85 Stack trace: #0 /home/yassine/srv/test/fb/vendor/facebook/php-sdk-v4/src/Facebook/FacebookBatchRequest.php(78): Facebook\FacebookBatchRequest->add(NULL, 'user-groups') #1 /home/yassine/srv/test/fb/vendor/facebook/php-sdk-v4/src/Facebook/FacebookBatchRequest.php(61): Facebook\FacebookBatchRequest->add(Array) #2 /home/yassine/srv/test/fb/vendor/facebook/php-sdk-v4/src/Facebook/Facebook.php(492): Facebook\FacebookBatchRequest->__construct(Object(Facebook\FacebookApp), Array, Object(Facebook\Authentication\AccessToken), 'v2.4') #3 /home/yassine/srv/test/fb/vendor/traitement.php(23): Facebook\Facebook->sendBatchRequest(Array) #4 {main} thrown in /home/yassine/srv/test/fb/vendor/facebook/php-sdk-v4/src/Facebook/FacebookBatchRequest.php on line 85

EDIT: I fixed this error by simply noticing that i needed to change $requestUserLikes by $requestUserManagedGroups, !!

I come up with a new problem is that I'm not being able to see the groups that I manage using this request: "me?fields=groups"

I'm not able to see some good results even in https://developers.facebook.com/tools/explorer/ can anyone please try if they can see their groups using the facebook explorer ?

0

There are 0 best solutions below