Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Facebook登录仅在点击两次后才有效_Php_Facebook - Fatal编程技术网

Php Facebook登录仅在点击两次后才有效

Php Facebook登录仅在点击两次后才有效,php,facebook,Php,Facebook,我已经在我的另一个网站上使用facebook登录按钮很长一段时间了。现在我正试图建立一个新的网站,我不能让登录工作。我基本上是将脚本的现有部分实现到我的新站点中。 现在,当我第一次单击登录按钮时,什么也没有发生。当我再次单击它时,它工作得很好 以下是我的登录页面的代码: require_once( 'Facebook/HttpClients/FacebookHttpable.php' ); require_once( 'Facebook/HttpClients/FacebookCurl.php'

我已经在我的另一个网站上使用facebook登录按钮很长一段时间了。现在我正试图建立一个新的网站,我不能让登录工作。我基本上是将脚本的现有部分实现到我的新站点中。 现在,当我第一次单击登录按钮时,什么也没有发生。当我再次单击它时,它工作得很好

以下是我的登录页面的代码:

require_once( 'Facebook/HttpClients/FacebookHttpable.php' );
require_once( 'Facebook/HttpClients/FacebookCurl.php' );
require_once( 'Facebook/HttpClients/FacebookCurlHttpClient.php' );
require_once( 'Facebook/Entities/AccessToken.php' );
require_once( 'Facebook/Entities/SignedRequest.php' );
require_once( 'Facebook/FacebookSession.php' );
require_once( 'Facebook/FacebookRedirectLoginHelper.php' );
require_once( 'Facebook/FacebookRequest.php' );
require_once( 'Facebook/FacebookResponse.php' );
require_once( 'Facebook/FacebookSDKException.php' );
require_once( 'Facebook/FacebookRequestException.php' );
require_once( 'Facebook/FacebookOtherException.php' );
require_once( 'Facebook/FacebookAuthorizationException.php' );
require_once( 'Facebook/GraphObject.php' );
require_once( 'Facebook/GraphSessionInfo.php' ); 
use Facebook\HttpClients\FacebookHttpable;
use Facebook\HttpClients\FacebookCurl;
use Facebook\HttpClients\FacebookCurlHttpClient;
use Facebook\Entities\AccessToken;
use Facebook\Entities\SignedRequest;
use Facebook\FacebookSession;
use Facebook\FacebookRedirectLoginHelper;
use Facebook\FacebookRequest;
use Facebook\FacebookResponse;
use Facebook\FacebookSDKException;
use Facebook\FacebookRequestException;
use Facebook\FacebookOtherException;
use Facebook\FacebookAuthorizationException;
use Facebook\GraphObject;
use Facebook\GraphSessionInfo;
FacebookSession::setDefaultApplication( 'app_id','app_secret' );
$helper = new FacebookRedirectLoginHelper( 'http://www.domain.com/login.php'     );
if ( isset( $_SESSION ) && isset( $_SESSION['fb_token'] ) ) {
$session = new FacebookSession( $_SESSION['fb_token'] );
try {
if ( !$session->validate() ) {
$session = null;
}
} catch ( Exception $e ) {
$session = null;
}
}   
if ( !isset( $session ) || $session === null ) {
try {
$session = $helper->getSessionFromRedirect();
} catch( FacebookRequestException $ex ) {
print_r( $ex );
} catch( Exception $ex ) {
print_r( $ex );
}
}

我很确定第一次点击时没有会话。我唯一的问题是,我无法理解为什么它在第二次点击时就能工作。

我刚刚发现,该脚本在firefox中工作得非常完美。但在chrome和opera中仍然没有。事实上,我无法理解的是,为什么旧版本在所有浏览器中都能完美工作,而这个版本只在firefox中工作?有没有人有同样的问题?请帮帮我。我一直在处理这个案子,我已经找到了解决办法。虽然我不得不承认,我不能真正解释它。我发现,如果我在登录之前直接调用loginpage,而不使用站点上的另一个子页面,那么脚本在所有浏览器上都能正常工作。关于这个“解决方案”,我唯一的猜测是,如果我在使用登录之前调用任何其他脚本,脚本可能会出现某种会话问题。我的解决方案是在提供登录页面的链接时使用http和完整域名。这是否假设存在一个会话,而该会话实际上不是在同一页面中创建的?@Igy Yes是这样做的。会话在作为额外文件的头文件中启动。