мой вопрос прост: я хочу отправить ключевое слово в api для поиска страниц, которые имеют одно и то же ключевое слово в имени страницы, и я хочу вернуть все страницы с деталями, такими как каждая страница с количеством лайков и разделом и т. д.
что я делаю, я загружаю facebook php sdk, следую документации и использую следующий код.
я создаю приложение в учетной записи разработчика Facebook и использую идентификатор и секрет приложения (и приложение работает);
<?php
require_once('facebook/autoload.php'); // change path as needed
$fb = new \Facebook\Facebook([
'app_id' => '*****',
'app_secret' => '******',
'default_graph_version' => 'v2.10',
//'default_access_token' => '{access-token}', // optional
]);
$helper = $fb->getRedirectLoginHelper();
// app directory could be anything but website URL must match the URL
given in the developers.facebook.com/apps
define('APP_URL', 'http://kout-kw.com/auto_search/testf.php');
$permissions = []; // optional
try {
if (isset($_SESSION['facebook_access_token'])) {
$accessToken = $_SESSION['facebook_access_token'];
} else {
$accessToken = $helper->getAccessToken();
}
} catch(Facebook\Exceptions\FacebookResponseException $e) {
// When Graph returns an error
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;
}
if (isset($accessToken)) {
if (isset($_SESSION['facebook_access_token'])) {
$fb->setDefaultAccessToken($_SESSION['facebook_access_token']);
} else {
// getting short-lived access token
$_SESSION['facebook_access_token'] = (string) $accessToken;
// OAuth 2.0 client handler
$oAuth2Client = $fb->getOAuth2Client();
// Exchanges a short-lived access token for a long-lived one
$longLivedAccessToken = oAuth2Client->getLongLivedAccessToken($_SESSION['facebook_access_token']);
$_SESSION['facebook_access_token'] = (string) $longLivedAccessToken;
// setting default access token to be used in script
$fb->setDefaultAccessToken($_SESSION['facebook_access_token']);
}
// redirect the user back to the same page if it has "code" GET variable
if (isset($_GET['code'])) {
header('Location: ./');
}
// type can be user, group, page or event
$search = $fb->get('/search?q=programming&type=page');
$search = $search->getGraphEdge()->asArray();
foreach ($search as $key) {
echo $key['name'] . '<br>';
}
// Now you can redirect to another page and use the access token from
$_SESSION['facebook_access_token']
} else {
// replace your website URL same as added in the
//developers.facebook.com/apps e.g. if you used http instead of https and
//you used non-www version or www version of your website then you must
//add
// the same here
$loginUrl = $helper->getLoginUrl(APP_URL, $permissions);
echo '<a href = "' . $loginUrl . '">Log in with Facebook!</a>';
}
когда я запускаю код, появляется страница с текстом Войти через Facebook! Я нажимаю на нее и получаю следующую ошибку
Не удается загрузить URL-адрес: домен этого URL-адреса не включен в домены приложения. Чтобы иметь возможность загрузить этот URL-адрес, добавьте все домены и поддомены вашего приложения в поле App Domains в настройках вашего приложения.
Я решил эту ошибку, я должен был указать URL-адрес перенаправления в настройках входа в facebook, но теперь у меня новая проблема
Facebook SDK возвратил ошибку: проверка подделки межсайтового запроса не удалась. Параметр «состояние» из URL-адреса и сеанса не совпадают.
Любые идеи?
ОБНОВИТЬ Я решил прошлую ошибку, добавив
$_SESSION['FBRLH_state']=$_GET['state'];
проблема в том, что я не получаю ошибки, но следующий код не дает мне никаких результатов?
кто-нибудь знает почему?
// type can be user, group, page or event
$search = $fb->get('/search?q=programming&type=group');
$search = $search->getGraphEdge()->asArray();
foreach ($search as $key) {
echo $key['name'] . '<br>';
}
какие-нибудь идеи, пожалуйста?
название этого вопроса предполагает другую проблему, чем тело вопроса ...
Перейдите в настройки своего приложения на странице разработчиков facebook, затем перейдите в «Настройки»> «Основные»,
Здесь вы найдете поле App Domains, отмеченное желтым цветом -
Здесь вам нужно указать полное доменное имя, в котором находится ваше приложение.
Тогда все будет работать.
какое значение вы поставили? это может быть проблема с тем, как вы ввели URL.
я пробую (kout-kw.com) с http - тоже не работает, я получаю ту же ошибку
Пожалуйста, проверьте свой код, где вы могли упомянуть URL, отличный от того, который вы настроили в своем приложении.
Пожалуйста, не создавайте дубликатов собственных вопросов, особенно вскоре после того, как вы задали первый раз. stackoverflow.com/q/51748735/1427878