#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. Вы убедились, что ваш запрос что-то возвращает? Попробуйте использовать изолированную среду