1

Facebookで認証を行った後、IAuthSessionを介してユーザーデータを取得しようとしています.AuthUserSessionを返すRequest.GetSession(true)でユーザーを取得しようとすると(IAuthSessionを実装します)、次のようなデータの部分的なサブセットを取得します:

IAuthSession

サービスメソッドで使用しようとしています

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

        }

次のように、認証プロバイダーをアプリホストに追加しました。

 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

私はそれを試してみることにした答えに基づいて、この問題のような同様の状況にありましたが、うまくいきました.

唯一の違いは、単純なインジェクターを使用していることです。その依存関係をシングルトンとして登録することを検討する必要があります。これを登録する簡単な方法は次のとおりです。

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