Сначала проверьте, использует ли ваш PHP-скрипт кодировку UTF8 или **UTF8 без BOM. Иногда это вызывает проблемы, это может произойти из-за каких-то других причин, одной из которых является обработка СЕССИИ. Я получаю эту ошибку, когда пытаюсь нажать кнопку «Назад» и «Вперед» в браузере: D
Шаг 3 будет php-скриптом обратного вызова, опубликованным в приложении Fb, где Facebook перенаправит пользователя после получения разрешений приложения Fb. Если он другой или домен другой, вы можете получить это.
Вы также можете установить параметр state
вручную.
Попробуй это
В вашем коде шага 3 после получения токена доступа преобразуйте его в долгоживущий токен, установите токен доступа в сеансе и проверьте наличие токена доступа. >GET параметр, который вы передаете на основе этого перенаправления на страницу
$fb = new \Facebook\Facebook([
'app_id' => $appId,
'app_secret' => $appSecret,
'default_graph_version' => $graph_api_version,
]);
$helper = $fb->getRedirectLoginHelper();
$accessToken = $helper->getAccessToken();
$oAuth2Client = $fb->getOAuth2Client();
if (!$accessToken->isLongLived()) {
// Exchanges a short-lived access token for a long-lived one
try {
$accessToken = $oAuth2Client->getLongLivedAccessToken($accessToken);
} catch (Facebook\Exceptions\FacebookSDKException $e) {
echo "<p>Error getting long-lived access token: " . $helper->getMessage() . "</p>\n\n";
exit;
}
}
// You can also store this access token in database for future use
$_SESSION['fb_access_token'] = (string) $accessToken;
if (isset($_GET['back_to']) and $_GET['back_to'] == '<any_specific_value>') {
header("Location: <specific page>");
exit();
} else {
// User is logged in with a long-lived access token.
// You can redirect them to a members-only page.
header("Location: <default page>");
exit();
}
<specific page>/<default page>
, используя fb_access_token из сеанса, вы можете запросить Facebook Graph/Marketing API.
После этого, если вы храните токен доступа в базе данных, в коде шага 1 вы можете проверить, есть ли у вас уже токен доступа. strong> конкретного пользователя или нет.
// Query database for Access token of the user
if (exists) {
// Fetch access Token and use it
} else {
$fb = new \Facebook\Facebook([
'app_id' => $this->appId,
'app_secret' => $this->appSecret,
'default_graph_version' => $this->apiVersion,
]);
$permissions = [
'email',
'manage_pages',
'business_management',
'ads_management'
];
$helper = $fb->getRedirectLoginHelper();
$loginUrl = $helper->getLoginUrl($this->redirectUrl.'?back_to='.$customer_website_url, $permissions);
}
person
Haridarshan
schedule
04.11.2016
state
сохраняется в сеансе при создании URL-адреса входа. Таким образом, перенаправление обратно в приложение из Facebook должно идти в тот же домен, потому что именно там находится сеанс. - person CBroe   schedule 04.11.2016