Facebook身份验证登录问题

时间:2017-04-18 11:34:30

标签: php facebook-php-sdk codeigniter-3

我在codeigniter 3中遇到了Facebook Auth的问题。 每当我按下facebook登录时,它会重定向到facebook请求权限,而den会返回链接中的代码,而不会将其重定向到我的个人资料页面。 以下是我的控制器

<?php defined('BASEPATH') OR exit('No direct script access allowed');
class User_Authentication extends CI_Controller
{
    function __construct() {
        parent::__construct();

        // Load facebook library
        $this->load->library('facebook');

        //Load user model
        //$this->load->model('user');
    }

    public function index(){
        $userData = array();

        // Check if user is logged in
        if($this->facebook->is_authenticated()){
            // Get user facebook profile details
            $userProfile = $this->facebook->request('get', '/me?fields=id,first_name,last_name,email,gender,locale,picture');

            // Preparing data for database insertion
            $userData['oauth_provider'] = 'facebook';
            $userData['oauth_uid'] = $userProfile['id'];
            $userData['first_name'] = $userProfile['first_name'];
            $userData['last_name'] = $userProfile['last_name'];
            $userData['email'] = $userProfile['email'];
            $userData['gender'] = $userProfile['gender'];
            $userData['locale'] = $userProfile['locale'];
            $userData['profile_url'] = 'https://www.facebook.com/'.$userProfile['id'];
            $userData['picture_url'] = $userProfile['picture']['data']['url'];

            // Insert or update user data
            $userID = $this->user->checkUser($userData);

            // Check user data insert or update status
            if(!empty($userID)){
                $data['userData'] = $userData;
                $this->session->set_userdata('userData',$userData);
            } else {
               $data['userData'] = array();
            }

            // Get logout URL
            $data['logoutUrl'] = $this->facebook->logout_url();
        }else{
            $fbuser = '';

            // Get login URL
            $data['authUrl'] =  $this->facebook->login_url();
        }

        // Load login & profile view
        $this->load->view('user_authentication/index',$data);
    }

    public function logout() {
        // Remove local Facebook session
        $this->facebook->destroy_session();
        // Remove user data from session
        $this->session->unset_userdata('userData');
        // Redirect to login page
        redirect('/user_authentication');
    }
}

以下是我在config.php中的facebook文件

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

/*
| -------------------------------------------------------------------
|  Facebook App details
| -------------------------------------------------------------------
|
| To get an facebook app details you have to be a registered developer
| at http://developer.facebook.com and create an app for your project.
|
|  facebook_app_id               string   Your facebook app ID.
|  facebook_app_secret           string   Your facebook app secret.
|  facebook_login_type           string   Set login type. (web, js, canvas)
|  facebook_login_redirect_url   string   URL tor redirect back to after login. Do not include domain.
|  facebook_logout_redirect_url  string   URL tor redirect back to after login. Do not include domain.
|  facebook_permissions          array    The permissions you need.
|  facebook_graph_version        string   Set Facebook Graph version to be used. Eg v2.6
|  facebook_auth_on_load         boolean  Set to TRUE to have the library to check for valid access token on every page load.
*/

$config['facebook_app_id']              = '******';
$config['facebook_app_secret']          = '*****';
$config['facebook_login_type']          = 'web';
$config['facebook_login_redirect_url']  = 'user_authentication';
$config['facebook_logout_redirect_url'] = 'user_authentication/logout';
$config['facebook_permissions']         = array('email');
$config['facebook_graph_version']       = 'v2.6';
$config['facebook_auth_on_load']        = TRUE;

我的观看文件

<!DOCTYPE HTML>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Login with Facebook in CodeIgniter by CodexWorld</title>
<style type="text/css">
h1{
    font-family:Arial, Helvetica, sans-serif;
    color:#999999;
}
.wrapper{width:600px; margin-left:auto;margin-right:auto;}
.welcome_txt{
    margin: 20px;
    background-color: #EBEBEB;
    padding: 10px;
    border: #D6D6D6 solid 1px;
    -moz-border-radius:5px;
    -webkit-border-radius:5px;
    border-radius:5px;
}
.fb_box{
    margin: 20px;
    background-color: #FFF0DD;
    padding: 10px;
    border: #F7CFCF solid 1px;
    -moz-border-radius:5px;
    -webkit-border-radius:5px;
    border-radius:5px;
}
.fb_box .image{ text-align:center;}
</style>
</head>
<body>
<?php
if(!empty($authUrl)) {

    echo '<a href="'.$authUrl.'"><img src="'.base_url().'assets/images/flogin.png" alt=""/></a>';
}else{
?>
<div class="wrapper">
    <h1>Facebook Profile Details </h1>
    <div class="welcome_txt">Welcome <b><?php echo $userData['first_name']; ?></b></div>
    <div class="fb_box">
        <p class="image"><img src="<?php echo $userData['picture_url']; ?>" alt="" width="300" height="220"/></p>
        <p><b>Facebook ID : </b><?php echo $userData['oauth_uid']; ?></p>
        <p><b>Name : </b><?php echo $userData['first_name'].' '.$userData['last_name']; ?></p>
        <p><b>Email : </b><?php echo $userData['email']; ?></p>
        <p><b>Gender : </b><?php echo $userData['gender']; ?></p>
        <p><b>Locale : </b><?php echo $userData['locale']; ?></p>
        <p><b>You are login with : </b>Facebook</p>
        <p><a href="<?php echo $userData['profile_url']; ?>" target="_blank">Click to Visit Facebook Page</a></p>
        <p><b>Logout from <a href="<?php echo $logoutUrl; ?>">Facebook</a></b></p>
    </div>
</div>
<?php } ?>
</body>
</html>

每当我按下facebook登录时,它会要求获得权限,然后在链接栏中使用代码将我扔回同一页面。 登录前

http://localhost/bird_eye_api/user_authentication

登录后

http://localhost/bird_eye_api/user_authentication?code=AQBWssEFr4IVgC9gMBX3QUR_v7bSWU2F2Lj59-u89tRdSJTuinJNN3f9EC35F1yR8uWMeMq4JvQRlDk982sddLz5jJymqhh537WlyGYNv8mHnpIW3qhggSKwm3AEGiujf9jtD54FJGzM5OzAY-QF1GTnmHa3EiO_ZsF-iQKqlLYv3NfCd30U2004Dbw6OsYLFPLsuRFpgEkA3J2XTxPpWHPVhX2TDGEFU72qXqTcuaYWCrrOFvZBCbwVziXL9Run13W8ZBZ84rOjJKar-Pwh9v4pztJ0OG3SYLsK3OiTZoMGjQ8Gcb_dohJ0d5b5383lUdk&state=663d1106ff10826c01b08c4f1d1933d8#_=_

回调网址有什么问题吗?

1 个答案:

答案 0 :(得分:1)

只需更改

$config['facebook_login_redirect_url']

在你的config.php中你想要返回的网页的网址。

例如:

$config['facebook_login_redirect_url']  = 'profile';

不要忘记在此页面上处理Facebook代码。这就像http://yoursite.com/bird_eye_api/profile?code=AABCCDDEEFF