#php #facebook #facebook-graph-api #redirect #url-redirection
#php #Facebook #facebook-graph-api #перенаправление
Вопрос:
f_config.php
<?php
include_once("f_src/facebook.php"); //include facebook SDK
######### Facebook API Configuration ##########
$appId = '<appid>'; //Facebook App ID
$appSecret = '<appsecret>'; // Facebook App Secret
$homeurl = 'http://example.com/login_beta.php'; //return to home
$fbPermissions = 'email'; //Required facebook permissions
//Call Facebook API
$facebook = new Facebook(array(
'appId' => $appId,
'secret' => $appSecret
));
$fbuser = $facebook->getUser();
?>
login.php
include_once("f_config.php");
if(!$fbuser){
$fbuser = null;
$loginUrl = $facebook->getLoginUrl(array('redirect_uri'=>$homeurl,'scope'=>$fbPermissions));
}else{
$user_profile = $facebook->api('/me?fields=id,first_name,last_name,email,gender,locale,picture');
$_SESSION['facebook_data'] = $user_profile; // Storing Facebook User Data in Session
//var_dump("Asd");
header("location: index.php");
}
//..
//..
<?php
if(!$fbuser){
$fbuser = null;
$loginUrl = $facebook->getLoginUrl(array('redirect_uri'=>$homeurl,'scope'=>$fbPermissions));
echo '<a class="btn btn-sm btn-info" href="'.$loginUrl.'"><i class="icon icon-facebook icon-2x"> </i><span style="font-size: 16px; padding: 0 16px;">Continue With Facebook</span></a>';
}
?>
Когда я пытаюсь войти в Facebook с учетной записью разработчика, он отлично авторизует приложение и попадает в index.php
Однако, когда я пытаюсь войти в систему с какой-либо другой учетной записью Facebook, она автоматически авторизует приложение, а затем перенаправляет обратно на login.php с помощью code = <somerandomvalue>
и затем снова требуется нажать кнопку Facebook login для перенаправления на index.php .
Я следую этому примеру:http://www.codexworld.com/login-with-facebook-using-php /
Ответ №1:
Я попытался отладить, и, похоже, проблема с перенаправлением URL с доменом, включая www. Это типично для перенаправления между URL-адресами, на которых есть и нет www., и приводит к тому, что сеанс больше не соответствует варианту доменного имени.
Решение: я включил приведенные ниже строки перед началом сеанса
ini_set('session.cookie_domain', '.example.com');
session_set_cookie_params(0, '/', '.example.com');
и в файле .htaccess добавлены строки ниже, которые удаляют URL формы www.
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.example.com$ [NC]
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]