Php 使用HybridAuth登录Facebook显示错误您无法直接访问此页面
我正在尝试为我的网站编写一个插件,使用HybridAuth连接facebook 上课 我只是尝试了以下代码Php 使用HybridAuth登录Facebook显示错误您无法直接访问此页面,php,facebook,session-variables,hybridauth,Php,Facebook,Session Variables,Hybridauth,我正在尝试为我的网站编写一个插件,使用HybridAuth连接facebook 上课 我只是尝试了以下代码 function authenticatewith( $provider ) { ini_set('display_errors','on'); //includes $config = dirname(__FILE__) . '/hybridauth-2.1.2/hybridauth/config.php'; require_once("hybrid
function authenticatewith( $provider ) {
ini_set('display_errors','on');
//includes
$config = dirname(__FILE__) . '/hybridauth-2.1.2/hybridauth/config.php';
require_once("hybridauth-2.1.2/hybridauth/Hybrid/Auth.php");
$provider_name = $provider;
//$config = $this->getconfig($id);
try {
// initialize Hybrid_Auth with a given file
$hybridauth = new Hybrid_Auth($config);
// try to authenticate with the selected provider
$adapter = $hybridauth->authenticate($provider_name);
// then grab the user profile
$user_profile = $adapter->getUserProfile();
}
catch( Exception $e ) {
echo "Error: please try again!";
echo "Original error message: " . $e->getMessage();
}
echo "User Details: ";
var_dump($user_profile);
}
当我从插件类调用这个函数时。在浏览器中,它显示以下错误:
您不能直接访问此页面
…浏览器地址栏中的URL如下所示:
在搜索stackoverflow后,我发现了一个类似的问题,该问题描述了类似的问题,但我无法找出如何将其中的建议应用到我的代码中,以解决该问题:
最可能的问题是不同的域名,因为我的网站运行在两个不同的域名上
如何修复代码以防止此问题
更多详细信息
我在www.bca.com(示例)上有一个facebook链接,当你点击它时,它会进入一个controller.php文件,该文件将访问我正在编写的插件。通常,如果我在网站上保存一个文件夹,比如www.bca.com无法访问的plugin文件夹,而不是其他域名可以访问的文件夹
我想说的是,会话正在bca.com中启动,但是Hybridauth类保存在其他域中。我认为这就是错误出现的原因
我尝试调试,发现Endpoint.php文件中的以下几行出现了错误
// Check if Hybrid_Auth session already exist
if (! $storage->config("CONFIG")) {
header("HTTP/1.0 404 Not Found");
die("You cannot access this page directly.");
}
过去三天我一直在努力解决这个问题。但我在这一点上卡住了,请有人帮助我。
提前感谢有相同问题的人有一个问题:调用API的文件在同一目录中吗
只有当我将我的文件与config.php文件放在同一文件夹中时,我才能工作。试试那里,告诉我它是否有效 添加
@session_start()后重试代码>在文件顶部的语句。我也有同样的问题。它与我们的自定义会话处理程序相关,该程序由session\u set\u save\u handler()
设置。
Hybrid Auth使用标准PHP会话,因此在重定向和打开新会话后,Hybrid Auth开始使用标准PHP文件会话,而不是自定义会话处理程序。这将导致会话中的配置数据丢失,并收到此错误消息
我通过在hybridauth/index.php
(与config.php
和live.php
位于同一目录)的顶部添加我们自己的自定义会话处理程序解决了这个问题。
这将强制混合身份验证使用您的自定义会话处理程序。我也有同样的问题。但我知道原因是什么。我开始使用Zebra课程。所以基本上这个脚本甚至找不到会话。有一件事我会考虑,看看你的会议是怎么做的是不同的。我自己只需要想办法让这两个人一起工作!我以前遇到过这个错误,就是当hybridauth库需要从会话中检索的信息不存在时。修复导致信息在会话存储中不可用的问题,您将克服此错误。