Приложение SL4 Facebook больше не получает access_token - PullRequest
0 голосов
/ 09 июня 2011

У меня есть приложение SL4 Out of Browser, которое работает уже несколько месяцев.На данный момент, похоже, он больше не будет получать access_token из Facebook.Я использую facebook-c # -sdk v4.1.1.Ниже приведен частичный код:

    void FacebookLoginBrowser_Loaded(object sender, RoutedEventArgs e)
    {
        if (!loggedIn)
        {
            LoginToFacebook();
        }
    }

    private void LoginToFacebook()
    {

        dynamic parms = new System.Dynamic.ExpandoObject();
        parms.display = "popup";
        parms.client_id = appId;
        parms.redirect_uri = successUrl;
        parms.cancel_url = failedUrl;
        parms.scope = requestedFbPermissions;
        parms.type = "user_agent";

        loggingInUri = fbApp.GetLoginUrl(parms);

        FacebookLoginBrowser.Source = (loggingInUri);

    }

Ниже приведен код HTML-страницы, на которую перенаправлен браузер:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
</head>
<body>
    Complete
</body>
<script type="text/javascript">
    window.external.notify(window.location.href);
</script>
</html>

Затем JavaScript запускает следующее:

    private void FacebookLoginBrowser_ScriptNotify(object sender, NotifyEventArgs e)
    {

        if (e.Value != "Failed")
        {
            string url = e.Value.Replace('#', '?');

            url = HttpUtility.UrlDecode(url);

            Uri ur = new Uri(url);

            string[] str = ur.Query.Split('&');
            access_token =  str[0].Split('=')[1];

            if(!String.IsNullOrEmpty(access_token)){
                fbApp = new FacebookApp(access_token);

                App app = (App)Application.Current;
                app.Fuid.fbApp = fbApp;

                loggedIn = true;
                loginSucceeded(e);
            }

        }

        if (fbApp.Session == null)
        {

            failedLogin();
        }
    }

Похоже, строка запроса, которая обычно содержит значение access_token, больше не существует.Используя Fiddler, я смог увидеть перенаправление с Facebook, которое содержит значение access_token.Я не уверен, где он теряется.Дайте мне знать, если кому-то нужна дополнительная информация.Спасибо!

1 Ответ

0 голосов
/ 28 июня 2011

Произошло изменение в поведении Facebook относительно структуры строки запроса.Это обсуждается в http://facebooksdk.codeplex.com/discussions/261528. Мой код использует WPF, а не Silverlight;Я не уверен, относится ли та же проблема к элементу управления Silverlight.

Обратите внимание, что текущая версия Facebook C # SDK - 5.0.40 за http://facebooksdk.codeplex.com/.

. См. Также Facebook на стороне клиента все еще выдает токены доступа? .

...