redirect_uri URL 必须是绝对 Facebook 登录 PHP SDK [英] The redirect_uri URL must be absolute Facebook login PHP SDK

查看:25
本文介绍了redirect_uri URL 必须是绝对 Facebook 登录 PHP SDK的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试在 codeigniter 的项目中实现 facebook 登录.

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

我正在使用 php sdk.

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?

这里是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; ?>

这里的内容是: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);
        }
    }

}

内容: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);
    }
}

为什么 facebook 会返回该消息,我该如何解决?

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

推荐答案

'redirect_uri' => 'home' // URL where you want to redirect your users after a successful login

您必须提供完整的 URL(从 http:// 开始),而不是 CI 页面别名.改用 site_url('home')

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

这篇关于redirect_uri URL 必须是绝对 Facebook 登录 PHP SDK的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆