У меня есть приложение 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.Я не уверен, где он теряется.Дайте мне знать, если кому-то нужна дополнительная информация.Спасибо!