Example #1
0
        private void HandleRedirectUri(string parameter)
        {
            var urlParams = HttpUtility.ParseQueryString(parameter);

            if (urlParams.AllKeys.Contains("state") && uint.TryParse(urlParams.Get("state"), out uint state) && _state != state)
            {
                throw new Exception("Facebook Server Error!");
            }

            if (urlParams.AllKeys.Contains("#access_token"))
            {
                string token = urlParams.Get("#access_token");
                try
                {
                    _facebookService.Authorize(token);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }

                var declined = _facebookService.GetDeclinedList(token);
                if (declined != null && declined.Contains("user_photos"))
                {
                    var result = MessageBox.Show("사진 권한을 허용하지 않으면 앱에서 Facebook을 사용할 수 없습니다." + Environment.NewLine
                                                 + "허용하시겠습니까?", "Memories", MessageBoxButton.YesNo);
                    if (result == MessageBoxResult.Yes)
                    {
                        Chromium.Load(_facebookService.GetReRequestUrl(declined, token));
                        return;
                    }
                    else
                    {
                        RaiseRequestClose(new DialogResult(ButtonResult.Cancel));
                        return;
                    }
                }

                RaiseRequestClose(new DialogResult(ButtonResult.OK));
            }
            else if (urlParams.AllKeys.Contains("error"))
            {
                string error = urlParams.Get("error");
                if (error == "access_denied")
                {
                    RaiseRequestClose(new DialogResult(ButtonResult.Cancel));
                    return;
                }
            }
        }