【问题标题】:"You cannot access this page directly" - Hybrid Auth“您无法直接访问此页面” - 混合身份验证
【发布时间】:2014-03-24 13:03:37
【问题描述】:

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

"You cannot access this page directly"

URL 最终为:

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 成功登录?

【问题讨论】:

  • 你是用插件还是直接实现?
  • 对不起,我不完全理解这个问题。我已经在我的 Yii 应用中实现了这个扩展 - yiiframework.com/extension/hybridauth
  • 你有解决办法吗?
  • 当我将 ZF2 与混合身份验证一起使用并使用数据库处理程序进行会话时,我遇到了同样的问题。使用会话直接按预期工作。

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


【解决方案1】:

这是由于 PHP SESSION 名称 如果您在 Yii 的配置文件中更改了会话名称。然后你必须使用在文件protected/modules/user/vendors/hybridauth/Hybrid/Endpoint.php中添加这个session_name('samar_v4');在functoin的开头authInit

【讨论】:

    【解决方案2】:

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

    您的重定向 URL 也应该是这样的:http://mydomain.com/hybridauth/?hauth.done=Facebook

    【讨论】:

    • 感谢您的回答。我已经确保这是正确配置的,遗憾的是不是这个问题。
    【解决方案3】:

    这也适用于我:

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

    我改成

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

    【讨论】:

      【解决方案4】:

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

      代替

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

      我改成

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

      现在它可以在我放置的任何地方使用。

      【讨论】:

      • 我在为我的网站开发的插件中尝试了你的答案,因为它不基于任何标准 MVC 框架。我也遇到了页面无法显示的问题。但是在我更改了基本 url = > "base_url" => "https://".$_SERVER['HTTP_HOST']."/inc/hybridauth/" 之后,它现在说连接到 wstation.wzx 期间发生错误.com。 SSL 收到超过最大允许长度的记录。 (错误代码:ssl_error_rx_record_too_long)
      • 嗨@Vikram,这是您现在遇到的 SSL 问题。如果您不使用 SSL,只需将 https 更改为 http,或者同时使用 "//".$_SERVER['HTTP_HOST']."/inc/hybridauth/" 更好。在stackoverflow.com/questions/119336/… 上查看有关您提到的错误的更多信息
      【解决方案5】:

      对于其他在这个问题上苦苦挣扎的人,并且它与 www 域注册问题无关,我的问题与无法写入 php 会话目录有关。不确定如何或何时更改,但如果您无法写入 /var/lib/php/5.5/session,hybridauth 将无法工作。

      【讨论】:

        【解决方案6】:

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

        我通过从我的开发 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,所以我将它们留给以后使用。)

        【讨论】:

          【解决方案7】:

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

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

          【讨论】:

            【解决方案8】:

            我发现这个问题似乎无法解决。我正在放弃,就在那时,我的直觉引导我进行测试,结果一切正常。

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

              只有当我将我的文件放在与 config.php 文件相同的文件夹中时,我才能工作。在那里试一试,告诉我它是否有效!

            一个拥抱 并向大家问好!

            【讨论】:

              【解决方案9】:

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

              将会话域更改为 .domain.tld 解决了这个问题。 - 希望这会有所帮助:)

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2013-09-10
                • 2020-05-26
                • 1970-01-01
                • 1970-01-01
                • 2015-07-18
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多