在iOS和Android上的Facebook浏览器中打开网站时,我们的webapp(react)的Localstorage表现得很奇怪。我们有一个身份验证流程,它依赖于在localstorage中存储令牌并读取它。我们在Facebook浏览器中打开网站(用户点击Facebook上我们网站的链接)时看到的症状是,登录时auth流首次尝试失败但有效在第二次尝试登录时。看起来本地存储是异步的。至少它的行为与Chrome,Firefox和Safari等其他浏览器不同。
我尝试在登录后重定向之前执行最多700毫秒的setTimeout,但它仍然无法从localstorage读取令牌。
然而,我可以在localstorage.getItem(key)
之后立即执行localstorage.setItem(key, value)
并获得预期结果。
答案 0 :(得分:0)
如果有人在 Fasebook 应用程序内浏览器中对 localStorage 有问题,请确保您在 localStorage 中将字符串设置为变量(不是数字、布尔值等)。这是一个简单的规则,但有时您会在没有收到错误时忘记它。
这是我的代码在 smarty Chrome 中工作,但在 Facebook 浏览器中没有按预期工作,因为 exp
变量是一个数字:
window.localStorage.setItem("exp", exp);
但是这段代码在两种浏览器中都运行良好:
window.localStorage.setItem("exp", ''+exp);