2

我在 hostgator.com 中有一个共享 ssl 的主机,我在 public_html(root) 目录中上传了 codeIgniter 站点。我想开发一个网站以及 facebook 应用程序。网站在运行 facebook 应用程序时通过“使用 facebook 登录”成功运行,它给出了 url 重定向错误。

这是http网址

 url(Website): http://example.org/ 

和安全网址是

 https://in9.hostgator.in/~username/

在 facebook 应用程序配置中,

  canvas url :  http://example.org/
  Secure Canvas URL : https://in9.hostgator.in/~username/ (Work in url)

当我运行 facebook 应用程序时,facebook 给出一个错误:

    API Error Code: 191
    API Error Description: The specified URL is not owned by the application
    Error Message: Invalid redirect_uri: Given URL is not permitted by the application configuration.

在应用程序中,根目录中没有用于重定向或删除 index.php 的 .htaccess 文件。

我已经运行了这个基本控制器代码:

    public function __construct()
{
    parent::__construct();
    $this->load->library("session");
    $this->load->helper('cookie');

    parse_str( $_SERVER['QUERY_STRING'], $_REQUEST );
    $CI = & get_instance();
    $CI->config->load("facebook",TRUE);
    $config = $CI->config->item('facebook');
    $this->load->library('Facebook', $config);

}

/**
 * Index function
 * @access public
 * 
public function index()
{
    $userId = $this->facebook->getUser();
    // If user is not yet authenticated, the id will be zero

    if($userId == 0){
                    // Generate a login url
        $params = array(
                  'scope' => 'email,user_about_me, user_birthday, user_location');
        $url = $this->facebook->getLoginUrl($params);
        echo "<script type='text/javascript'>" . "top.location.href = '" . $url. "';</script>";
        }
    } 

当我打印'$url'时,查询字符串中的redirect_url 是' http://in9.hostgator.in/~username/ ',而不是重定向到https 路径。

我很困惑,代码中有什么错误?或服务器中的一些错误配置或什么?

4

1 回答 1

2

Facebook 应用程序也有一个“应用程序域”设置,如果画布 url 不在列出的域下,则 facebook sdk 将无法工作。尝试同时添加 theexample.orghostgator.inthere。

或者,您可以使用 facebook canvas url 作为重定向 uri,因此,如果您的 facebook 应用程序的命名空间是,my-facebook-app那么您可以像这样生成登录 url:

$this->facebook->getLoginUrl(array(
    'scope' => 'email,user_about_me, user_birthday, user_location',
    // change the last segment to you app's namespace
    'redirect_uri' => 'https://apps.facebook.com/my-facebook-app/'
));

对于画布应用程序,这可能更可行,因为如果重定向 uri 直接指向您的安全画布 url,则用户在进行身份验证时将“丢失”facebook。

于 2013-04-07T20:44:29.690 回答