dongya6395 2013-06-07 21:06
浏览 72
已采纳

redirect_uri URL必须是绝对的Facebook登录PHP SDK

I am trying to implement the facebook login in my project in codeigniter.

I am using the php sdk.

When I click on the login button, it gives me an error:

The redirect_uri URL must be absolute

What is the problem and how do I fix it?

Here is the contents of view/home.php:

 <?php if(!$fb_data['me']): ?>
  Please login with your FB account: 
  <a href="<?php echo $fb_data['loginUrl']; ?>">login</a>
  <?php else: ?>
  <img src="https://graph.facebook.com/<?php 
    echo $fb_data['uid']; ?>/picture" alt="" class="pic" />
  <p>Hi <?php echo $fb_data['me']['name']; ?>,<br />
    <a href="<?php 
    echo site_url('welcome/topsecret'); ?>">
    You can access the top secret page</a> or 
    <a href="<?php echo $fb_data['logoutUrl']; ?>">logout</a> </p>
  <?php endif; ?>

Here is the contents of: controler/home.php

class Home extends CI_Controller {

   function __construct()
    {
        parent::__construct();

        $this->load->model('Facebook_model');
    }

    function index(){
        $this->load->model("Concertos_model");
        $data['banners'] = $this->Concertos_model->get_banner_data();


       $fb_data = $this->session->userdata('fb_data'); // This array contains all the user FB information

        $data = array(
                    'fb_data' => $fb_data,
                    );

        $this->load->view('home', $data);   

    }

    function topsecret()
    {
        $fb_data = $this->session->userdata('fb_data');

        if((!$fb_data['uid']) or (!$fb_data['me']))
        {
            redirect('home');
        }
        else
        {
            $data = array(
                        'fb_data' => $fb_data,
                        );

            $this->load->view('home', $data);
        }
    }

}

Contents of: model/Facebook_model.php:

<?php
class Facebook_model extends CI_Model {

    public function __construct()
    {
        parent::__construct();

        $config = array(
                        'appId'  => 'xxxxxxxxxxxxxxxxxxx',
                        'secret' => 'xxxxxxxxxxxxxxxxxxxxxxxxx',
                        'fileUpload' => true, // Indicates if the CURL based @ syntax for file uploads is enabled.
                        );

        $this->load->library('Facebook', $config);

        $user = $this->facebook->getUser();

        // We may or may not have this data based on whether the user is logged in.
        //
        // If we have a $user id here, it means we know the user is logged into
        // Facebook, but we don't know if the access token is valid. An access
        // token is invalid if the user logged out of Facebook.
        $profile = null;
        if($user)
        {
            try {
                // Proceed knowing you have a logged in user who's authenticated.
                $profile = $this->facebook->api('/me?fields=id,name,link,email');
            } catch (FacebookApiException $e) {
                error_log($e);
                $user = null;
            }
        }

        $fb_data = array(
                        'me' => $profile,
                        'uid' => $user,
                        'loginUrl' => $this->facebook->getLoginUrl(
                            array(
                                'scope' => 'email,user_birthday,publish_stream', // app permissions
                                'redirect_uri' => 'home' // URL where you want to redirect your users after a successful login
                            )
                        ),
                        'logoutUrl' => $this->facebook->getLogoutUrl(),
                    );

        $this->session->set_userdata('fb_data', $fb_data);
    }
}

Why does facebook return that message and how do I fix it?

  • 写回答

1条回答 默认 最新

  • duanpenpan5796 2013-06-07 21:11
    关注
    'redirect_uri' => 'home' // URL where you want to redirect your users after a successful login
    

    You have to provide full URL (starting from http://), not CI page alias. Use site_url('home') instead

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退
  • ¥20 win系统的PYQT程序生成的数据如何放入云服务器阿里云window版?