Авторизованное приложение не отображается как IsAuthorized () при использовании FacebookWebContext - PullRequest
1 голос
/ 25 ноября 2011

Я использую Facebook C # SDK.Это основано на примере ASPNet-MVC3-JsSdk.В моем приложении у меня есть стандартный код Javascript (по большей части взятый непосредственно из примера приложения).

function facebooklogin() {
            FB.login(function (response) {
                if (response.authResponse) {
                    alert(window.location.pathname);
                    // user authorized

                    window.location = window.location.origin + "/Account/FacebookLogon" + "?returnUrl=" + window.location.pathname;
                } else {
                    // user cancelled
                }
            }, { scope: "@ScoreTrack.Controllers.AccountController.ExtendedPermissions"});
        };

Я в основном хочу перенаправить на свое действие контроллера Account.FacebookLogon(), где я проверяю авторизациюи если пользователь авторизовал приложение, то я установил cookie / токен FormsAuthentication.

public ActionResult FacebookLogon(string returnURL)
{
    var fbWebContext = new FacebookWebContext(FacebookApplication.Current, ControllerContext.HttpContext); // or FacebookWebContext.Current;

    if (fbWebContext.IsAuthorized(@MyApp.Controllers.AccountController.ExtendedPermissions.Split(',')))
    {
        // If the User is Logged in and Authorized   
        var fbwc = new FacebookWebClient();
        dynamic me = fbwc.Get("me");
        FormsAuthenticationTicket authTicket = new
                        FormsAuthenticationTicket(1, //version
                        me.username, // user name
                        DateTime.Now,             //creation
                        DateTime.Now.AddMinutes(30), //Expiration
                        false, //Persistent
                        me.username);

        string encTicket = FormsAuthentication.Encrypt(authTicket);
        this.Response.Cookies.Add(new HttpCookie(FormsAuthentication.FormsCookieName, encTicket));                
    }
    return Redirect(Url.Content("~/" + returnURL));
}

Все работает фантастически, вплоть до момента:

Я нажимаю на кнопку входа в Facebook...

  • У меня появляется экран авторизации. Я нажимаю «Вход»
  • Я разрешаю расширенные разрешения (используя новую расширенную аутентификацию)
  • Javascript перенаправляет меня наМой AccountController.FacebookLogon() метод
  • FacebookLogon() метод проверяет, авторизован ли Facebook, а C # SDK говорит, что это не так.

Что такое Интернет?или FacebookC # SDK ребята?или другие умные программисты из Facebook на C #?

Какого черта?

Кто-нибудь?

...