随着新Javascript SDK和OAuth 2.0的发布,我想知道是否可以在不重定向用户的情况下更新SignedRequest(和authtoken),因此我使用了以下方法。基本上,这是一种保持活力的方法,我的应用程序可以绕过令牌的2小时到期时间。
我的应用包括:
要更新已签名的请求,请执行以下操作:
我更新了我的ajaxSetup,以便在每次调用我的服务器时都包含此参数。
var signedRequest;
function updateSignedRequest(_signedRequest) {
signedRequest = _signedRequest;
$.ajaxSetup({ data: { "signed_request": signedRequest} });
}
(function ensureAuth() {
setTimeout(function () { checkAuth(); ensureAuth(); }, 20000);
})();
function checkAuth() {
FB.getLoginStatus(handleResCallback, true);
}
function handleResCallback(res) {
if (!res.authResponse) {
handleNotConnected();
} else {
signedRequest = res.authResponse.signedRequest;
}
}
几个问题:
我相信Facebook C#SDK会查看每个新请求的signed_request
参数,而不是cookie。总是这样吗?
此外,您可以在此方法中看到任何其他漏洞吗?
答案 0 :(得分:0)
这可能不是用户的最佳方法。如果他们因任何原因已经注销或失败,您将需要通过弹出或重定向登录来处理它。这意味着他们将在随机时间中断他们正在做的事情 - 而不是等待让他们做一些需要认证的事情,然后提交登录等。你也可以订阅auth事件而不是每20秒检查一次。您可以在处理应用程序或退出时将handleNotConnected()设置为回调。或者,您可以阅读令牌的到期时间,并且只在到期时间过后才续订。