Пример кода WP7 Facebook SDK не работает - PullRequest
2 голосов
/ 02 февраля 2012

Работает ли текущий пример проекта WP7?Я скачал его и ввел свой идентификатор приложения и секретный ключ, который, как я знаю, работает из предыдущего приложения WM6.5.Я получаю страницу входа на Facebook и захожу. Я получаю страницу с вопросом, хочу ли я предоставить разрешение, что я и делаю.

Затем код генерирует исключение KeyNotFoundException при поиске ключа "access_token".Я добавил код с помощью:

if (objectname.ContainsKey ("access_code")) ...

Я поместил это везде, где я вижу, что делается попытка поискаэтот ключ, безрезультатно.Код все еще содержит ошибки в той же точке.

Что-то изменилось на странице Facebook с тех пор, как последний пример кода был успешно протестирован?Есть ли что-то еще, что я должен делать?

Большое спасибо

Ответы [ 3 ]

1 голос
/ 02 февраля 2012

Вот пример того, как использовать Facebook SDK с WP7. В общем, я получил webBrowser1 на MainPage.xaml, но по умолчанию он скрыт.

Код:

void MainPage_Loaded(object sender, RoutedEventArgs e)
{

            string appId = "";
            string[] extendedPermissions = new[] { "publish_stream", "offline_access", "user_groups" };

            var oauth = new FacebookOAuthClient { AppId = appId };

            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);
            webBrowser1.Navigate(loginUrl);
            webBrowser1.Visibility = System.Windows.Visibility.Visible;
            webBrowser1.Navigated += webBrowser1_Navigated;
}
void webBrowser1_Navigated(object sender, System.Windows.Navigation.NavigationEventArgs e)
    {
        FacebookOAuthResult result;
        if (FacebookOAuthResult.TryParse(e.Uri.AbsoluteUri, out result))
        {
            if (result.IsSuccess)
            {
                string _accessToken = result.AccessToken;
                webBrowser1.Visibility = System.Windows.Visibility.Collapsed;
            }
            else
            {
                var errorDescription = result.ErrorDescription;
                var errorReason = result.ErrorReason;
            }
        }
    }
0 голосов
/ 02 февраля 2012

Если вы просто входите в систему, тогда вам не нужен параметр с именем access_code.

Я подозреваю, что вам нужно использовать access_token, который возвращается как часть фрагмента после попытки входа в систему.

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

Я думаю, что это может быть ответ, который вы ищете:

http://facebooksdk.codeplex.com/discussions/284103

см. Также: http://facebooksdk.codeplex.com/workitem/5925

var jsonObject = new JsonObject();

if (returnParameter.ContainsKey("access_token"))
{
    jsonObject["access_token"] = returnParameter["access_token"];
}
...