1

WSocialBootstrapAPI プロジェクトを使用して新しいクラシック アカウントを作成すると、データベースに新しい UserAuth が作成されます。

次に、ログアウトして、古いアカウントを使用する代わりに Google OpenID (従来のサインインと同じ電子メールを使用する Google アカウント) でサインインしようとすると、新しいアカウントが作成されます。

従来のサインアップと Google

正常ですか?そうでない場合、 UserAuth をマージする方法は? カスタム IUserAuthRepository で CreateOrMergeAuthSession をデバッグすると、userAuth は常に新しいインスタンスになります。これは、authSession を使用した GetUserAuth には古いクラシック UserAuth を見つけるための情報 (電子メール) がないためです。

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

よろしくお願いいたします。

4

1 に答える 1

1

それが良い解決策かどうかはわかりませんが、うまくいきます:

次のメソッドを編集しました。

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

}

トークンの電子メールにコントロールを追加しました:

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

したがって、Googleメールアカウントでメールを使用して古いuserAuthを取得します。

于 2013-09-12T15:03:16.743 に答える