gpt4 book ai didi

javascript - 每次页面刷新后用户个人资料信息都会重置(使用 Hello.js)

转载 作者:搜寻专家 更新时间:2023-10-31 08:17:58 24 4
gpt4 key购买 nike

我在 AngularJS 应用程序中使用 Hello.js 让用户通过 Facebook 进行身份验证。用户登录后,我从 Facebook 获取用户信息,我使用 json 并从我自己的数据库中获取用户对象并将其存储在根范围内,以便我网站的各个区域都可以访问用户的个人资料信息(例如在我显示登录用户名的标题中)。

这是处理身份验证内容的服务

angular.module('myApp')
.factory('userService', function($rootScope, $location) {
// Hello.js Functions
hello.init({
facebook : '1234567891234545'
});

var service = {
isLoggedIn: function() {
return $rootScope.loggedInUser != null;
},
login: function() {
hello('facebook').login( function() {
hello('facebook').api('/me').success(function(json) {
$rootScope.loggedInUser = getUserFromMyOwnAPI(json.id);
$rootScope.$apply(function() {
$location.path('/');
});
});
});
},
logout: function() {
hello('facebook').logout( function() {
$rootScope.loggedInUser = null;
$location.path('/');
});
},
loggedInUser: function(){
return $rootScope.loggedInUser;
}
}

return service;
})

我遇到的问题是每次刷新页面时,我都会丢失个人资料信息。这是有道理的,因为存储用户数据的 $rootScope.loggedInUser(基于我从 Facebook 返回的 json)将在页面刷新后重置。

我该如何处理?我应该将用户数据放在 localStorage 而不是 rootScope 中吗?或者每次我想引用用户的个人资料信息时,我是否应该以某种方式利用 hello('facebook').api('/me') ?

我注意到 hello.js 已经在 localStorage 中存储了一些东西:

key: hello
{"facebook":{"state":"","access_token":"blahblahblah","expires_in":6776,"https":"1","client_id":"12345","network":"facebook","display":"none","redirect_uri":"http://adodson.com/hello.js/redirect.html","scope":"basic","expires":1412632794.806}}

所以我想知道我是否会通过将用户对象添加到 localStorage 来重复工作。

最佳答案

这个问题的答案是主观的,可以用不同的方式争论。但是,根据您的问题和评论,我认为在本地存储中保留(非敏感)用户个人资料信息是提供不间断用户体验的好选择。

关于javascript - 每次页面刷新后用户个人资料信息都会重置(使用 Hello.js),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26224291/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com