Facebook SDK for .NET登录按钮,注销代码

时间:2014-05-30 09:51:54

标签: c# facebook windows-phone-7 windows-phone-8 facebook-c#-sdk

我在app SDK中使用了Facebook SDK for .NET中的登录按钮控件,我需要将登录按钮控件的状态/状态从“Logout”更改为“Login”,即我需要注销用户通过代码手动。

怎么可能?

3 个答案:

答案 0 :(得分:3)

使用FacebookClient.Logout生成退出网址。

这只是一个样本。

private void btnLogout_Click(object sender, EventArgs e)
{
    var fb = new FacebookClient();

    var logoutUrl = fb.GetLogoutUrl(new
                                        {
                                            next =    "https://www.facebook.com/connect/login_success.html",
                                            access_token = _accessToken
                                        });
    var webBrowser = new WebBrowser();
    webBrowser.Navigated += (o, args) =>
                                {
                                    if (args.Url.AbsoluteUri == "https://www.facebook.com/connect/login_success.html")
                                        Close();
                                };

    webBrowser.Navigate(logoutUrl.AbsoluteUri);
}

请确保在登录时将access token保留在某处,以便您也可以将其用于注销。

答案 1 :(得分:1)

不会要求用户提供他的凭据,因为Facebook身份验证cookie仍然存在于WebBrowser控件中。

因此,要从Facebook完全注销用户,您需要清除WebBrowser Cookie。

不幸的是,在Windows Phone 7上没有简单的方法可以删除cookie。

在Windows Phone 8上,您只需要调用ClearCookiesAsync 方法

await new WebBrowser().ClearCookiesAsync();

这是一个使用它的教程:

Integrate Facebook to Your Windows Phone Application

答案 2 :(得分:0)

我花了很多时间拖网捕鱼才得到这个。非常感谢Kulasangar

我稍微修改了你的代码,但它有效:

var identity = AuthenticationManager.GetExternalIdentity(DefaultAuthenticationTypes.ExternalCookie);
var accessToken = identity.FindFirstValue("FacebookAccessToken");
var fb = new FacebookClient(accessToken);

var logoutUrl = fb.GetLogoutUrl(new
                {
                    next = "https://www.facebook.com/connect/login_success.html",
                    access_token = accessToken
                });
Response.Redirect(logoutUrl.AbsoluteUri);