FQL — таблица запросов приложений

#php #facebook

#php #Facebook

Вопрос:

Я использую таблицу запросов приложений для получения uid отправителя приглашения, но в результате получаю пустой массив.

   // Run fql query
      $params = array(
        'method' => 'fql.query',
        'query' => "SELECT request_id, app_id, recipient_uid, sender_uid FROM apprequest   
      WHERE app_id = 234234324324324 and request_id =".$request_id,
    );

    $result = $facebook->api($params);
  

Комментарии:

1. Пробовал включить ваш access_token?

2. OptimusCrime: куда добавить его access_tokn и как мне получить этот токен доступа

3. Вам не нужно обрабатывать access_token, если вы используете PHP SDK и $facebook-> api(); метод

4. Вы делали это до или после авторизации приложения?

Ответ №1:

Я думаю, у меня есть ответ на вашу проблему. В документации здесь, в таблице столбцов, указано следующее:

app_id: The ID of the app used to send the request. Note when indexing by app_id, you must also specify the recipient_uid.

— И —

recipient_uid: The ID of the user who received the request. Note when indexing by recipient_uid, you must also specify the app_id.

Когда я попытался выполнить ваш запрос, я получил следующую ошибку:

 "message": "(#604) Your statement is not indexable. The WHERE clause must contain an indexable column. Such columns are marked with * in the tables linked from http://developers.facebook.com/docs/reference/fql ",
  

Ваш запрос в настоящее время:

SELECT request_id, app_id, recipient_uid, sender_uid FROM apprequest WHERE app_id = 234234324324324 and request_id =".$request_id

Вы заметите, что не соблюдаете эти правила, поскольку вы указали ‘app_id’ в своем предложении WHERE, но без ‘recipient_uid’.

Попробуйте выполнить запрос без указания вашего app_id.

Комментарии:

1. : Мне нужен uid отправителя приглашения

2. Скажем, я a, отправьте запрос на b. мне нужен uid. где этот access_token в facebook

3. @user1010611 извиняюсь, я ошибся концом палки. Пожалуйста, посмотрите мой пересмотренный ответ

4. Пожалуйста, ознакомьтесь с этим пересмотренным ответом

Ответ №2:

Это работает для меня:

 void FacebookManager::GetRequests()
{
    FBRequest *fql = [FBRequest requestForGraphPath:@"fql"];
    [fql.parameters setObject:@"SELECT request_id, app_id, recipient_uid FROM apprequest WHERE app_id = <your app id> AND recipient_uid = <your fbid>"
                       forKey:@"q"];

    FBRequestConnection* rc = [fql startWithCompletionHandler:^(FBRequestConnection *connection,
                                      id result,
                                      NSError *error) {
        if (result) {
            NSLog(@"result:%@", result);
        }
    }];
}
  

Это дает мне массив json, записанный в окно вывода отладки.

Ответ №3:

 // Run fql query 
$params = array(
    'method' => 'fql.query', 
    'query' => "SELECT request_id, app_id, recipient_uid, sender_uid FROM apprequest WHERE app_id = 234234324324324 and request_id =".$request_id,
    'access_token' => $yourAccessTokenVar);
  

Я предполагаю, что у вас есть ваш access_token-код в переменной (вам это нужно для запуска приложения), просто замените $yourAccessTokenVar на эту переменную.

РЕДАКТИРОВАТЬ: Кстати, в вашем массиве слишком много запятой.

Комментарии:

1. Я полагаю, что, поскольку пользователь использует Facebook PHP SDK, это обрабатывается автоматически

2. Трудно сказать, не видя вашего кода. Не возражаете опубликовать ту часть кода, где вы используете new Facebook(); в вашем скрипте? Опубликуйте его по адресу pastebin.com или что-то еще (не забудьте подвергнуть цензуре вашу личную информацию)

3. Извините за неясность, мне нужна часть аутентификации 😉

4. Вам не нужно обрабатывать access_token, если вы используете PHP SDK и $facebook-> api(); метод. Это обрабатывается автоматически SDK.

5. Вы все еще не включаете часть с access_token . Не уверен, где у вас это есть. Я могу проверить пример с php sdk. Вы убедились, что ваш запрос что-то возвращает? Попробуйте использовать изолированную среду