从今天早上起,Facebook SDK似乎无法再使用Facebook应用登录。当我调用C#SDK中的FacebookSessionClient.LoginWithApp()方法时,它将打开Facebook然后继续打开一个带有Facebook网站登录的webframe。当凭据填写在网页框架上时,应用程序不会回复原始应用程序,因此您无法再登录Facebook。
我已在两台设备上对此进行了测试,两者似乎都无法正常工作。
是否有其他人遇到此问题,或者这是解决方案的已知问题?
这是我的RelayCommand调用方法
public RelayCommand LoginButton
{
get
{
return _loginButton = _loginButton ??
new RelayCommand(() =>
{
var fbSessionClient = new FacebookSessionClient("app_id");
fbSessionClient.LoginWithApp("email,basic_info,user_friends", "secret_string");
});
}
}
我的UriMapperBase处理程序
class FacebookAppAuthenticationHelper : UriMapperBase
{
public override Uri MapUri(Uri uri)
{
return new LoginViewModel().MapUri(uri);
}
}
我的Facebook URI回调处理程序
public Uri MapUri(Uri uri)
{
// if URI is a facebook login response, handle the deep link (once per invocation)
if (AppAuthenticationHelper.IsFacebookLoginResponse(uri))
{
FacebookSession session = new FacebookSession();
try
{
session.ParseQueryString(HttpUtility.UrlDecode(uri.ToString()));
// Handle success case
FacebookAuthorized = true;
// do something with the custom state parameter
if (session.State != "secret_string")
{
//nop
}
else
{
// save the token and continue (token is retrieved and used when the app is lauched)
FacebookSettings.AccessToken = session.AccessToken;
FacebookSettings.FacebookId = session.FacebookId;
FacebookSettings.TokenExpires = session.Expires;
}
}
catch (Facebook.FacebookOAuthException)
{
if (!this.facebookLoginHandled)
{
// Handle error case
this.facebookLoginHandled = true;
// return to a different uri
FacebookSettings.FacebookId = null;
FacebookSettings.AccessToken = null;
FacebookSettings.TokenExpires = DateTime.MinValue;
}
}
FacebookSettings.Save();
return new Uri("/View/MainPage.xaml", UriKind.Relative);
}
// by default, navigate to the requested uri
return uri;
}
答案 0 :(得分:1)
似乎这个问题出现在Facebook方面,并且已经修复了今天的更新。