thongaduka
thongaduka

Reputation: 627

How to logout FaceBook in window phone 7

I have a problem logging out of Facebook on Windows Phone. I have the code to login, but I can't log out of it. Can someone show me how to log out of Facebook on a Windows Phone?

Here's the login code:

private FacebookClient _asyncFbClient;
        private string _appID = "";
        private string _appSecret = "";

        private void StartFacebookLogin(object sender, RoutedEventArgs e)
        {
            string[] extendedPermissions = new[] { "user_about_me", "publish_stream", "email" };
            FacebookClient fb = new FacebookClient();

            var oauth = new FacebookOAuthClient { AppId = _appID, AppSecret = _appSecret };
            var logout = new FacebookUser();

            var parameters = new Dictionary<string, object>
                            {
                                {"response_type", "token"},
                                {"display", "touch"}                                        
                            };
            if (extendedPermissions != null && extendedPermissions.Length > 0)
            {
                var scope = new StringBuilder();
                scope.Append(string.Join(",", extendedPermissions));
                parameters["scope"] = scope.ToString();
            }

            var loginUrl = oauth.GetLoginUrl(parameters);
            webBrowser.Navigated += new EventHandler<System.Windows.Navigation.NavigationEventArgs>(CheckForAuth);
            webBrowser.Navigate(loginUrl);

        }

        private void CheckForAuth(object sender, System.Windows.Navigation.NavigationEventArgs e)
        {
            FacebookOAuthResult result;
            if (FacebookOAuthResult.TryParse(e.Uri, out result))
            {
                if (result.IsSuccess)
                {
                    IsolatedStorageSettings Settings = IsolatedStorageSettings.ApplicationSettings;
                    MessageBox.Show(result.AccessToken);
                    access = result.AccessToken;
                    if (Settings.Contains("MyFacebookAccessToken1"))
                        Settings["MyFacebookAccessToken1"] = result.AccessToken;
                    else
                        Settings.Add("MyFacebookAccessToken1", result.AccessToken);
                    Settings.Save();
                    _asyncFbClient = new FacebookClient(result.AccessToken);

                    _asyncFbClient.GetCompleted += new EventHandler<FacebookApiEventArgs>(_asyncFbClient_GetCompleted);
                    _asyncFbClient.GetAsync("/me");

                }
            }
        }

Here's the logout code:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(linkUrl);
            request.Method = "GET";
            request.BeginGetResponse(new AsyncCallback(LogoutResponse), request);
private void LogoutResponse(IAsyncResult result)
        {
            string responseData = "";
            try
            {
                HttpWebRequest request = result.AsyncState as HttpWebRequest;
                HttpWebResponse response = request.EndGetResponse(result) as HttpWebResponse;
                if (response != null && response.StatusCode == HttpStatusCode.OK)
                {
                    Stream stream = response.GetResponseStream();
                    StreamReader reader = new StreamReader(stream);
                    responseData = reader.ReadToEnd();
                    //responseData = true
                }
            }
            catch (Exception ex)
            {
                Dispatcher.BeginInvoke(() => { MessageBox.Show(ex.Message); });
            }
        }

I have tried to use Facebook's logout API and get a successful result, but the next time I open the web browser it's already automatically logged in to Facebook again. How can I get it to log out?

Upvotes: 0

Views: 3969

Answers (3)

Stuart
Stuart

Reputation: 66882

I tried quite a few hacks to get this to work... and then Facebook finally updated their documentation with a good answer:

Logout

You can log a user out of their Facebook session by directing them to the following URL:

https://www.facebook.com/logout.php?next=YOUR_URL&access_token=ACCESS_TOKEN YOUR_URL must be a URL in your site domain, as defined in the Developer App.

From http://developers.facebook.com/docs/authentication/

Upvotes: 2

Henrik Peinar
Henrik Peinar

Reputation: 2201

Facebook PHP SDK uses a function like this:

public function getLogoutUrl($params=array()) {
  return $this->getUrl(
  'www',
  'logout.php',
  array_merge(array(
    'next' => $this->getCurrentUrl(),
    'access_token' => $this->getAccessToken(),
  ), $params)
  );
}

Which creates a URL like:
https://www.facebook.com/logout.php?next={YOUR_ENCODED_URL}&access_token={YOUR_ACCESS_TOKEN}

I believe the encoded URL must be owned by the application to whom the access_token belongs. If you get that URL right, it'll work (just tried for one of my applications).

I'm not 100% sure if it works on windows-phone, but you can give it a try.

Upvotes: 0

Joseph Le Brech
Joseph Le Brech

Reputation: 6653

there is no FB Logout, it has been removed.

your best bet is to forget your credentials.

Upvotes: 0

Related Questions