С выпуском нового Javascript SDK и OAuth 2.0 мне стало интересно, возможно ли обновить SignedRequest (и authtoken) без перенаправления пользователя, поэтому я использовал следующий подход.По сути, это приложение для поддержки моего приложения, позволяющее обойти 2-часовое окно истечения срока действия токенов.
Мое приложение состоит из:
- Флэш-интерфейс + Javascript
- Веб-службы (asmx), использующие Facebook C # SDK
Чтобы обновить подписанный запрос, я делаю следующее:
- Каждые 20 секунд я звоню FB.getLoginStatus с использованием getTimeout ()
- Возвращает новый подписанный запрос
Я обновляю свой 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;
}
}
Пара вопросов:
Я считаю, что SDK Facebook C # просматривает параметр signed_request
при каждом новом запросе, а не cookie.Всегда ли так будет?
Кроме того, есть ли другие дыры, которые вы можете увидеть в этом подходе?