Как мне проверить, прошел ли данный идентификатор пользователя аутентификацию моего приложения?

#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;
}