Facebook登录在PHP中重定向uri问题

时间:2016-10-20 06:30:27

标签: php facebook facebook-graph-api redirect url-redirection

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/

1 个答案:

答案 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]