使用 facebook 登录网站后重定向页面

Posted

技术标签:

【中文标题】使用 facebook 登录网站后重定向页面【英文标题】:Redirect page after site login with facebook 【发布时间】:2014-02-02 08:12:08 【问题描述】:

我在时遇到问题。 1. 从网站点击 facebook 登录按钮,它会重定向到 facebook 登录页面 2. 用户通过身份验证但未重定向到headrer('');中给出的下一页 3. 如果我刷新同一个页面,那么它会重定向到给定的位置,并且 url 看起来像 =">http://192.1.1.1/mysite/welcome.php/#= 4. 它对google.com 正常工作,但不适用于本地网址,谷歌网址看起来像incorrect google url 我的代码

if(isset($_GET['fb']))

   $token_url = "https://graph.facebook.com/oauth/access_token?"."client_id=".$config['App_ID']."&redirect_uri=".urlencode($config['callback_url'])."&client_secret=".$config['App_Secret']."&code=".$_GET['code'];   
   $response = file_get_contents($token_url); 
   $params = null;
   parse_str($response, $params);

   $graph_url = "https://graph.facebook.com/me?access_token=".$params['access_token'];
   $user = json_decode(file_get_contents($graph_url));  //user data from facebook

   $email = $user->'email';    //i am getting email id from json data

   //search out for entry available for email in database
   $val_user = "SELECT email FROM tbl_facebook WHERE email ='".$email."'";
   $res_val_user = $con->query($val_user);
   $count = mysqli_num_rows($res_val_user);
   // if not then insert data to database
   if($count==0)
   
       $ins_fb = "INSERT INTO tbl_facebook set email='".$email."'";
       $res_fb = mysqli_query($con,$ins_fb);
       if($res_fb)
       
          //echo "facebook data saved"; exit; //working for this   
          //header('Location:https://www.google.co.in/'); //working for this also
          header('Location:http://192.1.1.1/mysite/welcome.php');
       
       else
       
          echo "facebook data is not saved";
       
   
   else // if yes then redirect to welcome page
   
        //echo "login successfully"; exit; // working for this also 
        header('Location:http://192.1.1.1/mysite/welcome.php');  // getting problem to redirect
        //header('Location:https://www.google.co.in/'); 
    

<?php
  // code for facebook login

 require 'lib/facebook/src/config.php';
 require 'lib/facebook/src/facebook.php';
// Create our Application instance (replace this with your appId and secret).
$facebook = new Facebook(array(
      'appId'  => $config['App_ID'],
      'secret' => $config['App_Secret'],
      'cookie' => true
));
?>

<a class="btn-facebook" href="https://www.facebook.com/dialog/oauth?client_id=<?php echo $config['App_ID']?>&redirect_uri=<?php echo $config['callback_url']?>&scope=email,user_likes,publish_stream">
                    <i class="icon-facebook icon-large"></i>
                    Signin with Facebook
                </a>

【问题讨论】:

你可以发布你正在使用的登录脚本吗? 登录功能工作正常,我正在从 facebook 获取用户数据,但在重定向时遇到问题 所以它进入了 if(isset($_GET['fb'])) 并且能够获取用户数据但是 header('Location:192.1.1.1/mysite/welcome.php');不工作? 是的,如果我写 echo "something";出口;然后它显示“某物”,但它没有重定向标题位置 通常是 php 关闭标记后的空白问题,并在某处回显。但为避免这种情况,您可以使用 JS 重定向 echo ''; 【参考方案1】:

标头重定向问题通常发生在 PHP 关闭标记之后或开始标记之前有空格、在 header() 之前输出等时。

为避免这种情况,我们需要确保

没有提到的空白 在此之前不要回显任何内容。

另外即使 header() 不起作用然后添加一个 exit() 为

header('Location:http://192.1.1.1/mysite/welcome.php');
exit();

终于可以用JS了

echo '<script>window.location = "'.$url.'";</script>';
exit;

希望这会有所帮助:)

【讨论】:

【参考方案2】:

只使用本地路径 url 不要使用完整的 URL

header("Location: welcome.php");

【讨论】:

以上是关于使用 facebook 登录网站后重定向页面的主要内容,如果未能解决你的问题,请参考以下文章

facebook使用django app成功登录后重定向url

Facebook 登录后重定向到新的 ViewController

WordPress用户登录后重定向到指定页面

从身份验证对话框登录后重定向到 Facebook 应用程序

Facebook注销按钮并在注销后重定向

用户登录后重定向到要访问页面