Я работал в php
Я сделал работу и sottoiscrizione
API Facebook v.2.2
но сейчас есть проблема
как мне прочитать обновления каналов, которые я получаю?
Код является:
<?php
//file of program
require_once('LoginFb.php');
require_once('FbClass.php');
require_once('dbClass.php');
require_once('FacebookClass.php');
//receive a Real Time Update
$method = $_SERVER['REQUEST_METHOD'];
// In PHP, dots and spaces in query parameter names are converted to
// underscores automatically. So we need to check "hub_mode" instead
// of "hub.mode".
if ($method == 'GET' && $_GET['hub_mode'] == 'subscribe' &&
$_GET['hub_verify_token'] == 'thisisaverifystring') {
echo $_GET['hub_challenge']; //print the code on the page that Facebook expects to read for confirmation
} else if ($method == 'POST') {
$updates = json_decode(file_get_contents("php://input"), true);
// Replace with your own code here to handle the update
// Note the request must complete within 15 seconds.
// Otherwise Facebook server will consider it a timeout and
// resend the push notification again.
$testo=json_decode($updates["entry"]);$var=fopen("nome_file.txt","a+");
fwrite($var, "ciao");
fwrite($var, $updates );
fclose($var);error_log('updates = ' . print_r($updates, true));
}
?>
В приведенном выше файле «$ update» содержит обновленный канал, но как извлечь?
Примечание: подписка РАБОТАЕТ и обновления поступили на мой сервер.
Помоги мне, пожалуйста 🙂
Согласно документации Facebook [ссылка на сайт]:
Обратите внимание, что обновления в реальном времени только указывают, что конкретное поле изменилось, они не включают в себя значение этих полей. Они должны использоваться только для указания того, когда необходимо сделать новый запрос API Graph к этому полю.
Таким образом, вы не получите обновленные данные, вместо этого вы получите обновленное имя поля. Получив обновление, вы должны извлечь измененное поле (я объяснил это ниже) и сделать новый запрос API Graph к этому полю. Наконец, вы получите обновленные данные поля.
Как извлечь имя пользователя и измененное поле?
Вы получаете это:
{"entry":[{"id":"****","uid":"****","time":1332940650,"changed_fields":{"status"]}],"object":"user"}
где «id» — это мой pageId, а «changes_fields» — массив измененных полей.
Вы можете извлечь их следующим образом:
$entry = json_decode($updates["entry"]); <br>
$page = json_decode($entry["uid"]); <br>
$fields = json_decode($entry["changed_fields"]);
Надеюсь, поможет! 🙂
Нет функции -> Respose содержит массив массивов, правильный код:
$json = json_decode($updates["entry"][0]["uid"], true);
Других решений пока нет …