在注册页面中,我让用户通过facebook登录我的网站来填写大部分字段,这样我就可以访问他的数据,然后他应该填写一些其他字段,然后注册到我的网站。
在登录页面上,用户可以选择使用用户名和密码登录,也可以使用以前注册的facebook帐户登录。
在登录页面上,我有这样的代码:
if ($user){
try {
$loggedin= true;
$user_profile = $facebook->api('/me','GET');
$login_url = $facebook->getLoginUrl(
array(
'scope' => 'publish_stream,read_friendlists,email'
)
);
if(email_exists($user_profile['email'])){
$user = get_user_by('email', $user_profile['email']);
wp_set_auth_cookie( $user->id );
wp_redirect( site_url() ); exit;
}else{
wp_redirect( site_url('/register/') ); exit;
}
} catch (FacebookApiException $e) {
$login_url = $facebook->getLoginUrl(
array(
'scope' => 'publish_stream,read_friendlists,email'
)
);
$loggedin= false;
error_log($e->getType());
error_log($e->getMessage());
}
}else{
$login_url = $facebook->getLoginUrl(
array(
'scope' => 'publish_stream,read_friendlists,email'
)
);
$loggedin= false;
}
因此,如果用户使用facebook登录,代码会检查他是否是会员,如果是,他会通过身份验证并重定向到主页,如果电子邮件不存在,他应该重定向到注册页面。
问题是,如果用户在注册页面中使用facebook登录,登录页面代码会将他识别为已登录用户,如果他是会员,则会允许他访问,如果他不是会员,则重定向他,但如果用户想使用另一个帐户登录,该怎么办?
我需要做的是终止登录页面中的访问令牌,这样他就可以使用他的facebook帐户重新登录。这可能吗?
阅读本页http://developers.facebook.com/docs/authentication/
将用户从Facebook注销
您可以通过重定向程序将用户从Facebook注销用户https://www.facebook.com/logout.php?next=YOUR_REDIRECT_URL&access_token=USER_access_token
下一个参数中提供的URL必须是具有相同基域的URL作为应用程序设置中定义的应用程序。
您也可以使用通过调用
FB.logout()
。