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,代码为<somerandomvalue>
,然后再次需要单击facebook登录按钮重定向到index.php。
我正在关注此示例:http://www.codexworld.com/login-with-facebook-using-php/
答案 0 :(得分:0)
我试图调试,它似乎是包含www的域名的网址重定向问题。 这是典型的重定向在已经拥有并且没有www的网址之间。在他们身上,并导致会话不再匹配域名的变化。
解决方案: 我在开始会议之前加入了以下行
ini_set('session.cookie_domain', '.example.com');
session_set_cookie_params(0, '/', '.example.com');
并在.htaccess文件中添加了删除www表单网址的行。
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.example.com$ [NC]
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]