[英]Facebook login button works only on the second click
我正在使用php facebook類,並使用$f->getLoginUrl()
在頁面上放置一個登錄按鈕,問題是此按鈕在我第一次單擊時不起作用。 它會執行預期的操作並返回到我的站點,但是$f->getUser()
為空。 奇怪的是,當我第二次單擊該按鈕時,它可以正常工作。
$facebook = new Facebook(array(
'appId' => '25317735807xxxx',
'secret' => '37e5dd05657f2cc2a1bdc9974985xxxx',
'redirURL' => 'http://mysite.com/',
));
$fb_login = '<a href="' . $facebook->getLoginUrl() . '" class="fb-login-button"><img src="img/fb-login-button.png" border="0" /></a>';
$fb_user = $facebook->getUser();
$user_level = 4;
if($page_access[$glob['pag']]['session'])
{
session_start();
}
if ($_SESSION[U_ID])
{
$user_level = $_SESSION['access_level'];
require_once("classes/cls_auth.php");
$auth = new auth();
$show_connect_alert = $auth->check_connection();
if($glob['pag'] == 'register' && $_SESSION[U_ID])
{
$glob['pag'] = 'profile';
}
}
else
{
//check if fb session exists
if ($fb_user)
{
try
{
$db = new mysql_db();
$db->query("SELECT email, password FROM member WHERE fb_id = $fb_user");
if ($db->move_next())
{
$glob['email'] = $db->f('email');
$glob['password'] = $db->f('password');
require_once("classes/cls_auth.php");
$auth = new auth();
$auth->login($glob);
}
else
{
$user_profile = $facebook->api('/me');
$glob['pag'] = "fboptions";
}
}
catch (FacebookApiException $e)
{
$glob['fb-error'] = $e;
unset($fb_user);
$user_level = 4;
}
}
else
{
// check login cookie
if(isset($_COOKIE['stagescan']))
{
list($arr['email'], $arr['password']) = explode(",", $_COOKIE['stagescan']);
require_once("classes/cls_auth.php");
$auth = new auth();
if(!$auth->login($arr))
{
setcookie('stagescan', "", time()-3600, "http://mysite.com/");
}
else
{
$glob['debug'] = "User logged in from cookie";
}
}
else
{
$user_level = 4;
}
}
}
您是否已在JavaScript部分中添加了標准FB處理程序? 他們應該重新加載頁面並設置一些cookie以使facebook API正常工作...
<!-- FACEBOOK JAVASCRIPT HANDLER START -->
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
FB.init({
appId: '%CONTEST_FACEBOOKAPPID%',
cookie: true,
xfbml: true,
oauth: true
});
FB.Event.subscribe('auth.login', function(response) {
window.location.reload();
});
FB.Event.subscribe('auth.logout', function(response) {
window.location.reload();
});
};
(function() {
var e = document.createElement('script'); e.async = true;
e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
document.getElementById('fb-root').appendChild(e);
}());
</script>
<!-- FACEBOOK JAVASCRIPT HANDLER END -->
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.