1

W当我使用 SocialBootstrapAPI 项目创建一个新的经典帐户时,我在数据库中创建了一个新的 UserAuth。

接下来,当我注销并尝试使用 Google OpenID 登录(使用与经典登录相同的电子邮件的 Google 帐户)而不是使用旧帐户时,它会创建一个新帐户:

注册经典版和谷歌

正常吗?如果不是如何合并 UserAuth ?当我在自定义 IUserAuthRepository 中调试 CreateOrMergeAuthSession 时,userAuth 始终是一个新实例,因为带有 authSession 的 GetUserAuth 没有信息(电子邮件)来查找旧的经典 UserAuth:

var userAuth = GetUserAuth(authSession, tokens) ?? new ServiceStack.ServiceInterface.Auth.UserAuth();

预先感谢您的帮助,

4

1 回答 1

1

I don't know if it is a good solution but it works :

I have edited the following methods :

public ServiceStack.ServiceInterface.Auth.UserAuth GetUserAuth(IAuthSession authSession, IOAuthTokens tokens)
{

}

I have added a control on the tokens email :

if (tokens != null && !tokens.Email.IsNullOrEmpty())
{
    var userAuth = GetUserAuthByUserName(tokens.Email);
    if (userAuth != null) return userAuth;
}

So it get my old userAuth using email on the google mail account.

于 2013-09-12T15:03:16.743 回答