验证访问令牌时出错:会话无效,因为用户已注销

时间:2011-05-29 10:30:32

标签: c# .net facebook exception-handling facebook-c#-sdk

我的代码:

 var fbWebContext = FacebookWebContext.Current;
 if (fbWebContext.IsAuthorized())
 {
      var fb = new FacebookWebClient(fbWebContext);
      dynamic result = fb.Get("/me");

      name.Text = result.name;
 }

 dynamic result = fb.Get("/me");

抛出:

  

(OAuthException)验证访问令牌时出错:会话无效,因为用户已注销。

我应该如何更改代码以防止这种情况发生?

3 个答案:

答案 0 :(得分:2)

你真的无法阻止它,你只需要捕获异常并处理它。好吧你可以防止它我想在客户端通过从FB Javascript SDK做一些等效的调用来检测错误的会话(过期,注销,用户更改他们的密码等)并让他们再次登录客户端在调用服务器端代码之前。

如果查看Facebook C#SDK源代码,您可以看到IsAuthorized()= IsAuthenticated()。所有IsAuthenticated都会检查您是否有会话,并且会话的到期时间尚未过去。用户在服务器注销时无法注销会话。

您还可以在此处获得其他Facebook OAuth例外。最好将上面的代码包装在try / catch中,并通过重新提示用户登录并与它们进行新的会话来处理异常。

答案 1 :(得分:2)

您可以要求“offline_access”扩展权限。这将阻止此消息,并且用户不必每次都登录。

答案 2 :(得分:0)

CanvasAnthorizer对象怎么样?此对象是否确保用户已记录并具有正确的权限?