我正在使用php sdk来登录用户的网站。我也正在使用redirect_uri重定向到登录.php我正在使用用户ID设置cookie。然后我正在检查cookie是否存在,我正在使用标头函数将用户带回main.php
<?php if(isset($_COOKIE['id']) == false){
require_once('scripts/facebook.php');
$config = array('appId' => 'xxx','secret' => 'xxx');
$params = array('scope' => 'email,offline_access,user_birthday', 'redirect_uri' => 'http://www.xxx.com/login.php');
$facebook = new Facebook($config);
$user = $facebook->getUser();
if($user) {
try {
$user_profile = $facebook->api('/me','GET');
$userid = $user_profile['username'];
//insert cookie
$expire = time() + 31556926;
$cookie_id = $user_profile['username'];
setcookie("id", $cookie_id, $expire);
header('Location: main.php');
} catch(FacebookApiException $e) {
$login_url = $facebook->getLoginUrl($params);
echo '<img src="assets/login.png"><br>';
echo '<a href="' . $login_url . '"><img src="assets/facebook_login.png"></a>';
error_log($e->getType());
error_log($e->getMessage());
}
} else {
$login_url = $facebook->getLoginUrl($params);
echo '<img src="assets/login.png"><br>';
echo '<a href="' . $login_url . '"><img src="assets/facebook_login.png"></a>';
}//end facebook
}else{
//if cookie id is set
header('Location: main.php');
}
?>
现在,问题是当用户对应用程序进行身份验证时,它会重定向到登录页面。 这意味着 PHP 页面没有刷新。我该如何解决这个问题?更新:如果用户刷新页面或再次单击登录,他将自动重定向到主?
我在这里有同样的问题。我将网站用户重定向到通过Facebook PHP函数getLoginURL()使用Facebook网站登录。一旦用户转到Facebook的登录屏幕并被重定向回我的网站,页面就不会刷新。这意味着我无法更新当前登录用户的页面显示。这似乎有点愚蠢 - 因为我认为这将是明显的"默认"做法。
如果我/你添加了客户端Facebook JS和根div,那么该过程适用于Facebook JS驱动的页面重新加载 - 但这种基于拉入客户端Facebook JS的重新加载是我可以没有的依赖 - 它只会增加膨胀并使事情复杂化。任何对如何解决这个问题有任何其他想法的人。
客户端 JS 放在您的结束正文标记之前:
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
FB.init({
appId: '<?php echo $facebook->getAppID() ?>',
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>