“您无法直接访问此页面” - Hybrid Auth

时间:2014-02-22 21:57:41

标签: php yii amazon-web-services elastic-beanstalk hybridauth

我在AWS Elastic Beanstalk上托管我的PHP Yii应用程序,因此使用数据库来存储会话。我已经在共享托管环境中使用Hybridauth成功实现了facebook登录。当我在Elastic Beanstalk上登录时,facebook登录会出现错误:

"You cannot access this page directly"

网址最终为:

http://mydomain.com/hybridauth/default/callback?hauth.start=Facebook&hauth.time=1393106016

我从here了解到,这与facebook回调应用程序有关,但却找到了不同的会话。然后Endpoint.php抛出错误:

            # Init Hybrid_Auth
        try {
            // Check if Hybrid_Auth session already exist
            if ( ! isset( $_SESSION["HA::CONFIG"] ) ) { 
                header( "HTTP/1.0 404 Not Found" );
                die( "You cannot access this page directly." );
            }

如何确保facebook回拨同一会话并成功登录hybridauth?

9 个答案:

答案 0 :(得分:5)

由于PHP SESSION名称 如果您在Yii的配置文件中有更改会话名称。然后,您必须在文件session_name('samar_v4');中添加此protected/modules/user/vendors/hybridauth/Hybrid/Endpoint.php,以启动functoin authInit

答案 1 :(得分:3)

检查您的Facebook应用程序的重定向网址。 Facebook不允许多个重定向网址。因此,每次更改主机/域/地址时,您都必须重新配置Facebook应用程序的重定向URL或使用其他一组凭据。

此外,您的重定向网址应如下所示:http://mydomain.com/hybridauth/?hauth.done=Facebook

答案 2 :(得分:2)

这对我也很有用:

“base_url”=> “https://example.com/inc/hybridauth/”,

我把它改成了

“base_url”=> “https://开头”。$ _ SERVER [ 'HTTP_HOST'] “/ INC / hybridauth /”,

答案 3 :(得分:1)

对我而言,它适用于主域,但不适用于子域。我发现它是config.php中的base_url导致错误。

而不是

"base_url" => "https://mydomain.com/inc/hybridauth/",

我把它改成了

"base_url" => "https://".$_SERVER['HTTP_HOST']."/inc/hybridauth/",

现在它适用于我所说的任何地方。

答案 4 :(得分:1)

对于其他任何正在努力解决这个问题,并且与www域注册问题无关的人,我的问题与无法写入php会话目录有关。不确定它是如何或何时被改变的,但如果你不能写入/var/lib/php/5.5/session,hybridauth将无效。

答案 5 :(得分:1)

根据其他答案,我认为这是一个会话问题,也许会话是在错误的域下启动的,然后无法在其他域下重新获取。

我通过从开发Apache配置中删除各种ServerAlias设置解决了这个问题。

这导致'错误:

ServerName mydomain.com.au.localhost
ServerAlias www.mydomain.com.au.localhost
ServerAlias localhost.mydomain.com.au        # << using this one

这解决了错误:

#ServerName mydomain.com.au.localhost
#ServerAlias www.mydomain.com.au.localhost
ServerName localhost.mydomain.com.au        # << using this one

apachectl restart

(我通常使用mydomain.com.au.localhost,所以我将它们留待以备后用。)

答案 6 :(得分:1)

使用Hybrid Auth 2.8我遇到了同样的问题。它与我们的自定义会话处理程序有关,该处理程序由session_set_save_handler()设置。 Hybrid Auth使用标准PHP会话,因此在重定向和打开新会话后,Hybrid Auth开始使用标准PHP文件会话而不是自定义会话处理程序。这会导致会话丢失配置数据并收到此错误消息。

我通过在hybridauth/index.php(位于与config.phplive.php相同的目录中)添加我们自己的自定义会话处理程序来解决此问题。 这会强制Hybrid Auth使用您的自定义会话处理程序。

答案 7 :(得分:0)

我发现这个问题似乎无法解决。我放弃了,那时我的直觉让我做了一个测试,并宣布一切正常。

对于有同样问题的人有疑问:调用API的文件在同一个目录下吗?

当我将我的文件放在与config.php文件相同的文件夹时,我才会工作。试试吧,告诉我它是否有效!

一个拥抱 和所有人的问候!

答案 8 :(得分:0)

我解决了我的特定HybridAuth“您无法直接访问此页面”错误与会话cookie上的域名。我的应用程序存在于子域中,我将重定向设计为指向socialize.sub.domain.tld,并且cookie未到达_Endpoint。

将会话域更改为.domain.tld解决了它。 - 希望这有助于:)