1

我已经开始在我的 WP7 应用程序中使用 C# facebook sdk,它可以工作,但我只能登录一次。我有一个类可以打开一个网络浏览器并加载一个 facebook 登录页面。我输入我的信息,它会做我想做的事。但是一旦我再次尝试登录,它就会记住我之前提供的信息,并且我无法测试其他 Facebook 帐户。有谁知道如何清除我的旧数据以便我可以使用另一个帐户登录?

4

2 回答 2

1

您需要执行注销操作才能使用另一个帐户执行登录操作尝试使用此代码执行注销。

public partial class LogoutPage : PhoneApplicationPage
{
    private Uri navigateUrl;
    public FacebookOAuthResult FacebookOAuthResult { get; private set; }

    public LogoutPage()
    {
        var appId = "173963872698818";
        string[] extendedPermissions = new[] { "user_about_me", "offline_access" };
        var oauth = new FacebookOAuthClient { AppId = appId };

        var parameters = new Dictionary<string, object>
                {
                    { "response_type", "token" },
                    { "display", "wap" }    //"popup works, touch not works
                };

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

        var loginUrl = oauth.GetLoginUrl(parameters);
        var logoutParameters = new Dictionary<string, object>
                                       {
                                           { "next", loginUrl }
                                       };            

        //Redirect to the following url.
        // https://www.facebook.com/logout.php?next=YOUR_URL&access_token=ACCESS_TOKEN
        //this.navigateUrl = oauth.GetLogoutUrl(logoutParameters);

        var a = App.Current as App;
        string absoluteURI = " https://www.facebook.com/logout.php?next=http://www.fengshuiexplorer.host56.com&access_token=" + a.myToken;

        this.navigateUrl = new Uri(absoluteURI);

        InitializeComponent();
    }


    private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
    {
        webBrowser1.Navigate(this.navigateUrl);
    }

    private void webBrowser1_Navigated(object sender, System.Windows.Navigation.NavigationEventArgs e)
    {
        FacebookOAuthResult result;
        if (FacebookOAuthResult.TryParse(e.Uri, out result))
        {
            this.FacebookOAuthResult = result;
            var a = App.Current as App;
            a.isLoggedIn = false;
            NavigationService.GoBack();
        }
        else
        {
            this.FacebookOAuthResult = null;
        }
    }
}
于 2013-02-28T10:47:11.923 回答
0

或者您可以在再次登录之前尝试调用以下代码片段。

await new WebBrowser().ClearCookiesAsync();
于 2014-07-18T04:15:43.430 回答