#facebook #facebook-graph-api
#Facebook #facebook-graph-api
Вопрос:
Я использую Facebook Graph API и хочу проверить, аутентифицировал ли пользователь мое приложение Facebook по идентификатору пользователя. Как мне это сделать?
Ответ №1:
Вы используете:
SELECT is_app_user FROM user WHERE uid=USER_ID
Это должно вернуть:
[
{
"is_app_user": true
}
]
Если пользователь вошел в ваше приложение.
Комментарии:
1. авторизован? Я думал, он попросил проверить, установлено ли у пользователя определенное приложение или нет. это та же проверка?
2. под вошедшим в систему он имел в виду пользователя, который установил приложение
Ответ №2:
Развивая ответ ifaour, в PHP этот запрос выглядел бы примерно так:
<?php
$facebook = new Facebook(
'appID' => YOUR_APP_ID,
'secret' => YOUR_APP_SECRET
);
$result = $facebook->api(array(
'method' => 'fql.query',
'query' => "SELECT is_app_user FROM user WHERE uid=$user_id"
));
$is_installed = $result[0]['is_app_user'];
Ответ №3:
Здесь вы можете выполнять несколько запросов вместе и избегать использования FQL.
Предполагая, что вы уже вошли в facebook и установили токен доступа в качестве токена доступа к приложению, вы можете сделать это:
$batch = array();
foreach($friendArray AS $friend) {
$batch[] = array(
'method' => 'GET',
'relative_url' => '/' . $friend . '?fields=installed'
);
}
FB()->useApplicationAccessToken();
$batchResponse = FB()->facebook()->api('?batch='.json_encode($batch), 'POST');
Затем вы можете обработать пакетный ответ с помощью кода, подобного этому:
$installedUsers = array();
$notInstalledUsers = array();
foreach ($batchResponse AS $response) {
$body = json_decode($response['body'], true);
if (!isset($body['id']))
continue;
$id = $body['id'];
if (isset($body['installed']))
$installedUsers[] = $id;
else
$notInstalledUsers[] = $id;
}