Esempio n. 1
0
function fbc_init_auth()
{
    $fbuid = fbc_facebook_client()->get_loggedin_user();
    $user = wp_get_current_user();
    $assoc_fbuid = fbc_get_fbuid($user->ID);
    if ($assoc_fbuid) {
        if ($fbuid == $assoc_fbuid) {
            // user is already logged in to both
            fbc_login_header('logged in', $fbuid, $user->ID);
            return;
        } else {
            //wp session, no fbsession = logout of wp and reload page
            // or, user is logged in under a different fb account
            wp_logout();
            header('Location: ' . $_SERVER['REQUEST_URI']);
            fbc_login_header('logging user out assoc=' . $assoc_fbuid, $fbuid, $user->ID);
            exit;
        }
    } else {
        if ($user->ID) {
            fbc_login_header('non-facebook user', $fbuid, $user->ID);
            // wpuser not associated w/ fb.  do nothing
            return;
        } else {
            if ($fbuid) {
                // not a wp user, but fb authed = log them in to wp
                $res = fbc_login_if_necessary();
                if ($res > 0) {
                    $wp_uid = fbc_fbuser_to_wpuser($res);
                    wp_set_current_user($wp_uid);
                    fbc_login_header('login sucessful', $fbuid, $wp_uid);
                } else {
                    fbc_login_header('login error ' . $res, $fbuid, $user->ID);
                }
            } else {
                fbc_login_header('anonymous', 0, 0);
                // neither facebook nor wordpress, do nothing
                return;
            }
        }
    }
}
Esempio n. 2
0
function fbc_login_if_necessary($allow_link = false)
{
    $fbuid = fbc_facebook_client()->get_loggedin_user();
    if ($fbuid) {
        $wpuid = fbc_fbuser_to_wpuser($fbuid);
        if (!$wpuid) {
            // There is no wp user associated w/ this fbuid
            $user = wp_get_current_user();
            $wpuid = $user->ID;
            if ($wpuid && $allow_link) {
                // User already has a wordpress account, link to this facebook account
                update_usermeta($wpuid, 'fbuid', "{$fbuid}");
            } else {
                // Create a new wordpress account
                $wpuid = fbc_insert_user($fbuid);
                if ($wpuid === FBC_ERROR_USERNAME_EXISTS) {
                    return FBC_ERROR_USERNAME_EXISTS;
                }
            }
        } else {
            // Already have a linked wordpress account, fall through and set
            // login cookie
        }
        wp_set_auth_cookie($wpuid, true, false);
        return $fbuid;
    } else {
        return FBC_ERROR_NO_FB_SESSION;
    }
}