我的代码:
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)验证访问令牌时出错:会话无效,因为用户已注销。
我应该如何更改代码以防止这种情况发生?
答案 0 :(得分:2)
你真的无法阻止它,你只需要捕获异常并处理它。好吧你可以防止它我想在客户端通过从FB Javascript SDK做一些等效的调用来检测错误的会话(过期,注销,用户更改他们的密码等)并让他们再次登录客户端在调用服务器端代码之前。
如果查看Facebook C#SDK源代码,您可以看到IsAuthorized()= IsAuthenticated()。所有IsAuthenticated都会检查您是否有会话,并且会话的到期时间尚未过去。用户在服务器注销时无法注销会话。
您还可以在此处获得其他Facebook OAuth例外。最好将上面的代码包装在try / catch中,并通过重新提示用户登录并与它们进行新的会话来处理异常。
答案 1 :(得分:2)
您可以要求“offline_access”扩展权限。这将阻止此消息,并且用户不必每次都登录。
答案 2 :(得分:0)
CanvasAnthorizer对象怎么样?此对象是否确保用户已记录并具有正确的权限?