注册并登录facebook

时间:2012-08-26 12:59:04

标签: php facebook wordpress

在注册页面中,我给用户提供填写大部分字段的选项,让他通过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帐户重新登录。这可能吗?

1 个答案:

答案 0 :(得分:3)

阅读本页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   作为应用程序设置中定义的应用程序。

     

您还可以使用以下方式在客户端将用户从Facebook注销   Javascript SDK通过调用FB.logout()