Приложение продолжает спрашивать «разрешить разрешение» даже при том, что я это сделал.
https://www.facebook.com/v3.3/dialog/oauth?client_id=CLIENTID&state=StateHASH&response_type=code&sdk=php-sdk-5.7.0&redirect_uri=HTTPS://MYWEB/fb-callback.php&scope=email%2Cpages_show_list%2Cpublish_pages%2Cmanage_pages
Я захожу по этой ссылке после первого разрешения разрешения, и я 'Я в замешательстве.Разве не во второй или третий раз, просто отправьте меня по ссылке перенаправления и больше не спрашивайте разрешения, которое я уже разрешил?
Когда я нажимаю войти в систему с Facebook, он запрашивает авторизацию ужеавторизованный пользователь.Я использую PHP SDK 5.7.0.У меня возникла эта проблема, когда я перенес свой сайт на другой хост, но, тем не менее, я не считаю, что это главная проблема.
ПРИМЕЧАНИЕ. Если код запрашивает JUST разрешение на «электронную почту» и никаких других разрешенийработает отлично. config-fb.php
if(!isset($_SESSION))
session_start();
require_once "Facebook/autoload.php";
$FB = new \Facebook\Facebook([
'app_id' => '{APP_ID}',
'app_secret' => '{APP_SECRET}',
'default_graph_version' => 'v3.3'
]);
$helper = $FB->getRedirectLoginHelper();
$permissions = ['email', 'manage_pages']; //if there is only the email permission, it works perfectly
$redirectURL = "http://localhost/fb-callback.php";
$loginURL = $helper->getLoginUrl($redirectURL, $permissions);
echo "<a href='".$loginURL."'>Login</a>";
fb-callback.php
<?php
require_once "config-fb.php";
if (isset($_GET['state'])) {
$helper->getPersistentDataHandler()->set('state', $_GET['state']);
}
try {
$accessToken = $helper->getAccessToken();
} catch (\Facebook\Exceptions\FacebookResponseException $e) {
echo "Response Exception: " . $e->getMessage();
exit();
} catch (\Facebook\Exceptions\FacebookSDKException $e) {
echo "SDK Exception: " . $e->getMessage();
exit();
}
if (!$accessToken) {
echo "Access token missing";
exit();
}
$oAuth2Client = $FB->getOAuth2Client();
if (!$accessToken->isLongLived())
$accessToken = $oAuth2Client->getLongLivedAccessToken($accessToken);
$response = $FB->get("/me?fields=id, accounts{id,name,picture,access_token}, first_name, last_name, email, picture.type(large)", $accessToken);
$userData = $response->getGraphNode()->asArray();
if(!isset($_SESSION)){
session_start();
}
echo "Good";
//Then do something with $accessToken;