Logout works properly now.

This commit is contained in:
Zach Copley 2009-05-19 01:07:45 +00:00
parent 57860b4d8a
commit 35b3934233
2 changed files with 20 additions and 40 deletions

View File

@ -254,6 +254,8 @@ class FBConnectloginAction extends Action
function tryLogin() function tryLogin()
{ {
common_debug("Trying Facebook Login...");
$flink = Foreign_link::getByForeignID($this->fbuid, FACEBOOK_SERVICE); $flink = Foreign_link::getByForeignID($this->fbuid, FACEBOOK_SERVICE);
if ($flink) { if ($flink) {
@ -261,7 +263,7 @@ class FBConnectloginAction extends Action
if ($user) { if ($user) {
common_debug("Logged in Facebook user $flink->foreign_id as user $user->id"); common_debug("Logged in Facebook user $flink->foreign_id as user $user->id ($user->nickname)");
common_set_user($user); common_set_user($user);
common_real_login(true); common_real_login(true);
@ -284,6 +286,7 @@ class FBConnectloginAction extends Action
array('nickname' => array('nickname' =>
$nickname)); $nickname));
} }
common_redirect($url, 303); common_redirect($url, 303);
} }
@ -302,10 +305,6 @@ class FBConnectloginAction extends Action
function bestNewNickname() function bestNewNickname()
{ {
common_debug("bestNewNickname()");
common_debug(print_r($this->fb_fields, true));
if (!empty($this->fb_fields['name'])) { if (!empty($this->fb_fields['name'])) {
$nickname = $this->nicknamize($this->fb_fields['name']); $nickname = $this->nicknamize($this->fb_fields['name']);
if ($this->isNewNickname($nickname)) { if ($this->isNewNickname($nickname)) {

View File

@ -67,10 +67,8 @@ class FBConnectPlugin extends Plugin
$name = get_class($action); $name = get_class($action);
common_debug("action: $name");
// Avoid a redirect loop // Avoid a redirect loop
if ($name != 'FBConnectloginAction') { if (!in_array($name, array('FBConnectloginAction', 'ClientErrorAction'))) {
$this->checkFacebookUser($action); $this->checkFacebookUser($action);
@ -122,7 +120,14 @@ class FBConnectPlugin extends Plugin
$apikey = common_config('facebook', 'apikey'); $apikey = common_config('facebook', 'apikey');
$plugin_path = common_path('plugins/FBConnect'); $plugin_path = common_path('plugins/FBConnect');
$login_url = common_get_returnto() || common_local_url('public'); $url = common_get_returnto();
if ($url) {
// We don't have to return to it again
common_set_returnto(null);
} else {
$url = common_local_url('public');
}
$html = sprintf('<script type="text/javascript">FB.init("%s", "%s/xd_receiver.htm"); $html = sprintf('<script type="text/javascript">FB.init("%s", "%s/xd_receiver.htm");
@ -130,7 +135,7 @@ class FBConnectPlugin extends Plugin
window.location = "%s"; window.location = "%s";
} }
</script>', $apikey, $plugin_path, $login_url); </script>', $apikey, $plugin_path, $url);
$action->raw($html); $action->raw($html);
@ -203,11 +208,16 @@ class FBConnectPlugin extends Plugin
function checkFacebookUser() { function checkFacebookUser() {
$user = common_current_user();
if ($user) {
return;
}
try { try {
$facebook = getFacebook(); $facebook = getFacebook();
$fbuid = $facebook->get_loggedin_user(); $fbuid = $facebook->get_loggedin_user();
$user = common_current_user();
// If you're a Facebook user and you're logged in do nothing // If you're a Facebook user and you're logged in do nothing
@ -244,35 +254,6 @@ class FBConnectPlugin extends Plugin
} }
function onStartLogout($action)
{
common_debug("onEndLogout()");
common_set_user(null);
common_real_login(false); // not logged in
common_forgetme(); // don't log back in!
try {
$facebook = getFacebook();
$fbuid = $facebook->get_loggedin_user();
// XXX: ARGGGH this doesn't work right!
if ($fbuid) {
$facebook->expire_session();
$facebook->logout(common_local_url('public'));
}
} catch (Exception $e) {
common_debug('Problem expiring FB session');
}
common_debug("logged out.");
return false;
}
} }