Мне нужно снять некоторые сообщения с страницы Facebook и отобразить их на моем веб-сайте. Я смотрю на использование API-интерфейса Facebook для этого, но я немного борюсь, документация и всевозможные учебники, похоже, предполагают, что я настрою входной поток, чтобы сначала попросить пользователя войти на мой сайт. Но это не то, что мне нужно. Мне нужно, чтобы приложение на стороне сервера было (осталось) аутентифицировано с помощью Facebook и регулярно загружало новые сообщения.Аутентификация с помощью графического интерфейса Facebook
Я выяснил, что с помощью токенов страницы можно получить долгоживущий токен, но сейчас я даже не могу понять, как аутентифицироваться с использованием обычных коротких токенов.
Итак, я настроил тестовое приложение, чтобы получить идентификатор приложения и секрет, и отправился в API-интерфейс API-интерфейсов Facebook, чтобы получить токен аутентификации для пользователя, которого я использовал для создания приложения.
Вот основной код, я использую для тестирования соединения Graph API:
(...)
$fb = new \Facebook\Facebook([
'app_id' => $app_id,
'app_secret' => $app_secret,
'default_graph_version' => '2.8',
'default_access_token' => $app_access_token
]);
try {
$response = $fb->get('/me');
} catch(\Facebook\Exceptions\FacebookResponseException $e) {
echo 'Graph returned an error: ' . $e->getMessage();
exit;
} catch(\Facebook\Exceptions\FacebookSDKException $e) {
// When validation fails or other local issues
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}
$me = $response->getGraphUser();
Когда я запускаю мой код, я получаю это сообщение:
Graph returned an error: Invalid appsecret_proof provided in the API argument
Я тройной проверил что $app_id
и $app_secret
являются значениями, указанными при создании приложения, и я проверил тройной токен доступа (попробовал личный токен пользователя, а также токен страницы, который я смог получить через API-интерфейс Graph API).
я нашел другую SO нить предполагая, что я должен генерировать appsecret доказательства вручную, так что я сделал это:
$appsecret_proof= hash_hmac('sha256', $app_access_token, $app_secret);
$fb = new \Facebook\Facebook([
'app_id' => $app_id,
'app_secret' => $appsecret_proof,
'default_graph_version' => '2.8',
'default_access_token' => $app_access_token
]);
Я не уверен, если я должен передать $appsecret_proof
к app_secret
или как я должен использовать Это. Я по-прежнему получаю ту же ошибку с кодом выше.
В общем, вам не нужно иметь дело с appsecret_proof при использовании официального sdk. если нет, вы должны добавить его к каждому вызову api. – luschn
Да, как я понимаю из документации, это не обязательно, но при условии, что сообщение об ошибке сообщает мне, что 'appsecret_proof' недействителен, я полагал, что использование этого явно может помочь. Но я получаю такое же сообщение об ошибке с или без. – funkylaundry