我在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?
答案 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.php
和live.php
相同的目录中)添加我们自己的自定义会话处理程序来解决此问题。
这会强制Hybrid Auth使用您的自定义会话处理程序。
答案 7 :(得分:0)
我发现这个问题似乎无法解决。我放弃了,那时我的直觉让我做了一个测试,并宣布一切正常。
对于有同样问题的人有疑问:调用API的文件在同一个目录下吗?
当我将我的文件放在与config.php文件相同的文件夹时,我才会工作。试试吧,告诉我它是否有效!
一个拥抱 和所有人的问候!答案 8 :(得分:0)
我解决了我的特定HybridAuth“您无法直接访问此页面”错误与会话cookie上的域名。我的应用程序存在于子域中,我将重定向设计为指向socialize.sub.domain.tld,并且cookie未到达_Endpoint。
将会话域更改为.domain.tld解决了它。 - 希望这有助于:)