C# FaceBook异常未处理
我在这些方面是新手,我一直在测试api。。。 我遇到了这样一种情况: 如果用户更改Facebook的密码 访问令牌已续订。。。并尝试发布API发布 异常和应用程序崩溃。。。 如何解决这种情况C# FaceBook异常未处理,c#,wpf,facebook,windows-phone-7,facebook-c#-sdk,C#,Wpf,Facebook,Windows Phone 7,Facebook C# Sdk,我在这些方面是新手,我一直在测试api。。。 我遇到了这样一种情况: 如果用户更改Facebook的密码 访问令牌已续订。。。并尝试发布API发布 异常和应用程序崩溃。。。 如何解决这种情况 try { FacebookApp app = new FacebookApp(FacebookToken); var args = new Dictionary<string, object>();
try {
FacebookApp app = new FacebookApp(FacebookToken);
var args = new Dictionary<string, object>();
args["message"] = "hi";
args["caption"] = "appcaption";
args["description"] = "appdescription";
args["name"] = "appname";
args["picture"] = "apppicture";
args["link"] = "applink";
app.ApiAsync((X) => { calback(X); }, null, "/me/feed", args, HttpMethod.Post);
}
catch (Exception ex) {
Uri url = new Uri("/MyFacebook.xaml", UriKind.Relative);
NavigationService.Navigate(url);
}
谢谢你看到这篇文章了吗
具体来说,请看第3部分:
您是否可以存储访问令牌,然后在出现错误时再次显示登录页面 SDK的行为是预期的。异常不是“崩溃”应用程序,而是告诉您何时出现错误状态。基本上,您的操作是正确的,但是您不应该捕获异常,而应该只捕获FaceBookOAutheException,如下所示:
try {
FacebookApp app = new FacebookApp(FacebookToken);
var args = new Dictionary<string, object>();
args["message"] = "hi";
args["caption"] = "appcaption";
args["description"] = "appdescription";
args["name"] = "appname";
args["picture"] = "apppicture";
args["link"] = "applink";
app.ApiAsync("/me/feed", args, (X) => { calback(X); }, HttpMethod.Post);
}
catch (FacebookOAuthException) {
// This is where you would reauthorize the user or send them to a 'login' page
Uri url = new Uri("/MyFacebook.xaml", UriKind.Relative);
NavigationService.Navigate(url);
}
试试看{
FacebookApp app=新的FacebookApp(FacebookToken);
var args=新字典();
args[“message”]=“hi”;
args[“caption”]=“appcaption”;
args[“description”]=“appdescription”;
args[“name”]=“appname”;
参数[“图片”]=“应用图片”;
参数[“链接”]=“应用链接”;
app.apianc(“/me/feed”,args,(X)=>{calback(X);},HttpMethod.Post);
}
捕获(FaceBookOAutheException){
//在这里,您可以重新授权用户或将其发送到“登录”页面
uriurl=newuri(“/MyFacebook.xaml”,UriKind.Relative);
导航服务。导航(url);
}
我还建议您阅读.Net异常处理,以便更好地了解使用它们的时间和原因 使用FacebookAuthenticationResult,您可以检查是否存在错误,然后避免执行请求:
private void FacebookLoginBrowser_Navigated(object sender, System.Windows.Navigation.NavigationEventArgs e)
{
FacebookAuthenticationResult authResult;
if (FacebookAuthenticationResult.TryParse(e.Uri, out authResult))
{
if (authResult.ErrorReason == "user_denied")
{
// Do something knowing that this failed (cancel). }
else
{
fbApp.Session = authResult.ToSession();
loginSucceeded();
}
}
}
这个api与我们的链接解释的方式不同。。。但是在这个api上,工作比你的建议更容易。。。在我的代码中,我使用的是用户登录时存储的访问令牌,但是。。。在墙上张贴时,我尝试了一次。。捕捉到如果发生一个错误,导航服务将打开登录页面。。。不幸的是,我不知道为什么。。。应用程序崩溃而不是捕获异常…非常感谢您的帮助我正在测试您的解决方案并继续犯相同的错误。。。有什么不对劲吗??:我不明白:(我不明白你的意思。你在收到异常后是否重新授权用户?不,我不知道…但是使用你的解决方案,异常没有被捕获…应用程序崩溃…我的解决方案也会发生同样的情况…如果在发布之前我有一个webrowser,这段代码会起作用…但我没有…我只有访问令牌,我没有正在尝试即时发布,无需登录页面…谢谢
private void FacebookLoginBrowser_Navigated(object sender, System.Windows.Navigation.NavigationEventArgs e)
{
FacebookAuthenticationResult authResult;
if (FacebookAuthenticationResult.TryParse(e.Uri, out authResult))
{
if (authResult.ErrorReason == "user_denied")
{
// Do something knowing that this failed (cancel). }
else
{
fbApp.Session = authResult.ToSession();
loginSucceeded();
}
}
}