1

在使用 facebook 进行身份验证后,我试图通过 IAuthSession 获取用户数据,当我尝试使用返回 AuthUserSession(实现 IAuthSession)的Request.GetSession(true)获取用户时,我得到了部分数据子集,如下所示:

身份验证会话

我正在尝试在服务方法中使用它

[ClientCanSwapTemplates]
        [DefaultView("dashboard")]
        public DashboardResponse Get(FacebookRequest userRequest)
        {
            var user1 = Request.GetSession(true);
            return new DashboardResponse();

        }

我已将身份验证提供程序添加到我的 apphost 中,如下所示:

 Plugins.Add(new AuthFeature(() => new AuthUserSession(), new IAuthProvider[] {
                new FacebookAuthProvider(appSettings), 
                new TwitterAuthProvider(appSettings), 
                new BasicAuthProvider(appSettings), 
                new GoogleOpenIdOAuthProvider(appSettings), 
                new LinkedInAuthProvider(appSettings), 
                new CredentialsAuthProvider()
            }));

据我所知,facebookAuthProvider应该用以下信息填充 IAuthSession:

userSession.FacebookUserId = tokens.UserId ?? userSession.FacebookUserId;
userSession.FacebookUserName = tokens.UserName ?? userSession.FacebookUserName;
userSession.DisplayName = tokens.DisplayName ?? userSession.DisplayName;
userSession.FirstName = tokens.FirstName ?? userSession.FirstName;
userSession.LastName = tokens.LastName ?? userSession.LastName;
userSession.PrimaryEmail = tokens.Email ?? userSession.PrimaryEmail ?? userSession.Email;

我错过了什么步骤?

4

1 回答 1

2

基于我决定尝试的答案,我处于类似这个问题的类似情况,它奏效了。

唯一的区别是我使用的是简单的注入器,你必须考虑将该依赖项注册为Singleton,我注册它的更简单方法是:

simpleInjectorContainer.RegisterSingle<ICacheClient>(()=>new MemoryCacheClient());
于 2013-08-14T03:16:36.873 回答