Как выйти из ЖЖ в окне телефона 7 - PullRequest
0 голосов
/ 27 февраля 2012

У меня проблема с выходом из Facebook на Windows Phone.У меня есть код для входа, но я не могу выйти из него.Может кто-нибудь показать мне, как выйти из Facebook на Windows Phone?

Вот код входа в систему:

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");

                }
            }
        }

Вот код выхода из системы:

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Я пытался использовать API выхода Facebook и получить успешный результат, но в следующий раз, когда я открою веб-браузер, он автоматически снова войдет в Facebook.Как я могу заставить его выйти из системы?

Ответы [ 3 ]

2 голосов
/ 28 февраля 2012

Я попробовал немало хаков, чтобы заставить это работать ... и затем Facebook наконец обновил свою документацию с хорошим ответом:

Выход

Вы можете выйти из сеанса Facebook, указав пользователю следующий URL:

https://www.facebook.com/logout.php?next=YOUR_URL&access_token=ACCESS_TOKEN YOUR_URL должен быть URL в домене вашего сайта, как определено в Приложение для разработчиков.

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

0 голосов
/ 27 февраля 2012

Facebook PHP SDK использует такую ​​функцию:

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

, которая создает URL-адрес, например:
https://www.facebook.com/logout.php?next={YOUR_ENCODED_URL}&access_token={YOUR_ACCESS_TOKEN}

Я считаю, что закодированный URL-адрес должен принадлежать приложениюкому принадлежит access_token.Если вы правильно укажете этот URL, он будет работать (только что попробовал для одного из моих приложений).

Я не уверен на 100%, работает ли он на windows-phone, но вы можете попробовать.

0 голосов
/ 27 февраля 2012

FB Logout отсутствует, он был удален.

Лучше всего забыть свои учетные данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...