问题描述
||
我的代码:
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)验证访问令牌时出错:会话无效,因为用户已注销。
我应该如何更改代码以防止这种情况?
解决方法
您可以请求\“ offline_access \”扩展权限。这将阻止此消息,并且用户不必每次都登录。
, 您确实无法阻止它,您只需要捕获异常并对其进行处理。好吧,您可以通过在FB Javascript SDK中进行一些等效调用来检测到错误的会话(过期,注销,用户更改密码等),并在客户端上重新登录,以防止出现这种情况。客户端,然后再调用服务器端代码。
如果查看Facebook C#SDK源代码,则可以看到IsAuthorized()= IsAuthenticated()。 IsAuthenticated所做的只是检查您是否有一个会话,以及该会话的到期时间是否还没有过去。会话可能已被用户注销(服务器未知)而无效。
您还可以在这里找到其他Facebook OAuth例外。最好将上述代码包装在try / catch中,并通过再次提示用户登录并与他们进行新的会话来处理异常。
, 那么CanvasAnthorizer对象呢?这个对象是否可以确保用户已登录并具有正确的权限?