Я пытаюсь создать приложение, которое может получать эти данные из группы, которой я управляю:
-> имя участника
-> админ, который добавил каждого участника
У меня есть 3 отдельных файла:
index.php: содержит ведение журнала с использованием групповых разрешений:
<?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: получить токен доступа Facebook.
<?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: выполнять запросы графа (здесь, где возникают проблемы)
<?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";
}
}
?>
Я придумаю эту ошибку 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
РЕДАКТИРОВАТЬ: я исправил эту ошибку, просто заметив, что мне нужно изменить $ requestUserLikes на $ requestUserManagedGroups, !!
У меня возникла новая проблема: я не могу видеть группы, которыми управляю, используя этот запрос: «me? Fields = groups»
Я не могу увидеть хорошие результаты даже в https://developers.facebook.com/tools/explorer/ Может кто-нибудь попробовать, если они могут видеть свои группы, используя Facebook Explorer?
Задача ещё не решена.
Других решений пока нет …