Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用Facebook api在windows phone 7中从Facebook注销?_C#_Facebook_Windows Phone 7 - Fatal编程技术网

C# 如何使用Facebook api在windows phone 7中从Facebook注销?

C# 如何使用Facebook api在windows phone 7中从Facebook注销?,c#,facebook,windows-phone-7,C#,Facebook,Windows Phone 7,我正在尝试将Facebook添加到我的应用程序中。我试过一个样品 public class FacebookLoginPageViewModel { private static WebBrowser _webBrowser; private Page _page; private const string ExtendedPermissions = "user_about_me,read_stream,publish_stream,user_birthday,offli

我正在尝试将Facebook添加到我的应用程序中。我试过一个样品

public class FacebookLoginPageViewModel
{
    private static WebBrowser _webBrowser;
    private Page _page;
    private const string ExtendedPermissions = "user_about_me,read_stream,publish_stream,user_birthday,offline_access,email";
    private readonly FacebookClient _fb = new FacebookClient();
    private const string AppId = "1XXX58XXXXXXXX9";
    Uri url;
    public FacebookLoginPageViewModel(Panel container, Page page)
    {
        _page = page;
        _webBrowser = new WebBrowser();

        var loginUrl = GetFacebookLoginUrl(AppId, ExtendedPermissions);
        url = loginUrl;
        container.Children.Add(_webBrowser);
        _webBrowser.Navigated += webBrowser_Navigated;
        _webBrowser.Navigate(loginUrl);
    }

    private Uri GetFacebookLoginUrl(string appId, string extendedPermissions)
    {
        var parameters = new Dictionary<string, object>();
        parameters["client_id"] = appId;
        parameters["redirect_uri"] = "https://www.facebook.com/connect/login_success.html";
        parameters["response_type"] = "token";
        parameters["display"] = "touch";

        // add the 'scope' only if we have extendedPermissions.
        if (!string.IsNullOrEmpty(extendedPermissions))
        {
            // A comma-delimited list of permissions
            parameters["scope"] = extendedPermissions;
        }
        return _fb.GetLoginUrl(parameters);
    }

    void webBrowser_Navigated(object sender, System.Windows.Navigation.NavigationEventArgs e)
    {
        FacebookOAuthResult oauthResult;
        if (!_fb.TryParseOAuthCallbackUrl(e.Uri, out oauthResult))
        {
            return;
        }

        if (oauthResult.IsSuccess)
        {
            var accessToken = oauthResult.AccessToken;
            LoginSucceded(accessToken);
        }
        else
        {
            // user cancelled
            MessageBox.Show(oauthResult.ErrorDescription);
        }
    }

    private void LoginSucceded(string accessToken)
    {
        var fb = new FacebookClient(accessToken);

        fb.GetCompleted += (o, e) =>
        {
            if (e.Error != null)
            {
                Deployment.Current.Dispatcher.BeginInvoke(() =>
                {
                    MessageBox.Show(e.Error.Message);
                    return;
                });
            }

            var result = (IDictionary<string, object>)e.GetResultData();
            var id = (string)result["id"];

            var url = string.Format("/Views/FacebookInfoPage.xaml?access_token={0}&id={1}", accessToken, id);
            var rootFrame = (App.Current as App).RootFrame;
            Deployment.Current.Dispatcher.BeginInvoke(() =>
               {
                   rootFrame.Navigate(new Uri(url, UriKind.Relative));
               });
        };

        fb.GetAsync("me?fields=id");
    }
我试过这样做:

string newURL = string.Format("https://www.facebook.com/logout.php?next={0}&access_token={1}", _userId, _accessToken);
但是这里我必须传递给你的URL吗?

我找到了解决方案

public static void logoutSession()
        {
            _webBrowser.Navigated +=  new EventHandler<System.Windows.Navigation.NavigationEventArgs>(CheckForout);
            string logoutUrl = "https://www.facebook.com/connect/login_success.html";
            string newURL = string.Format("https://www.facebook.com/logout.php?next={0}&access_token={1}", logoutUrl, access_tocken);
            _webBrowser.Navigate(new Uri(newURL));
        }

        public static void CheckForout(object sender, System.Windows.Navigation.NavigationEventArgs e)
        {
            string fbLogoutDoc = _webBrowser.SaveToString();
            Regex regex = new Regex
            ("\\<a href=\\\"/logout(.*)\\\".*data-sigil=\\\"logout\\\"");
            MatchCollection matches = regex.Matches(fbLogoutDoc);
            if (matches.Count > 0)
            {
                string finalLogout = string.Format("http://m.facebook.com/logout{0}",
                    matches[0].Groups[1].ToString().Replace("amp;", ""));
                _webBrowser.Navigate(new Uri(finalLogout));
            }
        }
这将在windows phone 7中从facebook注销

string newURL = string.Format("https://www.facebook.com/logout.php?next={0}&access_token={1}", _userId, _accessToken);
public static void logoutSession()
        {
            _webBrowser.Navigated +=  new EventHandler<System.Windows.Navigation.NavigationEventArgs>(CheckForout);
            string logoutUrl = "https://www.facebook.com/connect/login_success.html";
            string newURL = string.Format("https://www.facebook.com/logout.php?next={0}&access_token={1}", logoutUrl, access_tocken);
            _webBrowser.Navigate(new Uri(newURL));
        }

        public static void CheckForout(object sender, System.Windows.Navigation.NavigationEventArgs e)
        {
            string fbLogoutDoc = _webBrowser.SaveToString();
            Regex regex = new Regex
            ("\\<a href=\\\"/logout(.*)\\\".*data-sigil=\\\"logout\\\"");
            MatchCollection matches = regex.Matches(fbLogoutDoc);
            if (matches.Count > 0)
            {
                string finalLogout = string.Format("http://m.facebook.com/logout{0}",
                    matches[0].Groups[1].ToString().Replace("amp;", ""));
                _webBrowser.Navigate(new Uri(finalLogout));
            }
        }