ServiceStack Twitter Авторизация и регистрация
У меня есть приложение, которое работает с использованием CredentialsAuthProvider() в течение некоторого времени.
Сегодня я хотел бы добавить твиттер и фейсбук в качестве опций для людей, чтобы создать аккаунт. У меня есть леса на месте.
//Register all Authentication methods you want to enable for this web app.
Plugins.Add(new AuthFeature(() => new AuthUserSession(),
new IAuthProvider[] {
new CredentialsAuthProvider(),
new TwitterAuthProvider(appSettings),
new FacebookAuthProvider(appSettings)
}));
//Provide service for new users to register so they can login with supplied credentials.
Plugins.Add(new CustomRegistrationFeature());
Конечные точки / api / auth / twitter и / api / auth / facebook работают, и я вижу, что пользовательский сеанс создается путем посещения / api / auth после завершения процесса OAuth ОДНАКО...
В моем UserAuthRepository (OrmLiteAuthRepository) не создано ни одного пользователя. Идентификатор пользователя, сохраненный в сеансе, недействителен. Любой метод, украшенный атрибутом [Authenticate], вызывает ошибку 404 (пользователь не найден).
Я ожидаю, что пользователь создается с помощью First/Last/Email, полученного из Facebook или Twitter. Я что-то неправильно понимаю?
ServiceStack v4.0.38
2 ответа
Я хотел обновить эту ветку, чтобы сказать, что я обновился до ServiceStack 4.0.42, и эта проблема разрешилась сама собой.
Несколько вещей, чтобы проверить, будет oauth.CallbackUrl
был установлен правильно с учетом нескольких зарегистрированных вами провайдеров. Например http://localhost/auth/{0}
,
Также вы должны проверить, если ваш IDbConnectionFactory
используется с вашим OrmLiteAuthRepository
также был зарегистрирован в контейнере IoC. Например
var dbFactory = new OrmLiteConnectionFactory(
"~/App_Data/db.sqlite".MapHostAbsolutePath(),
SqliteDialect.Provider);
container.Register<IDbConnectionFactory>(dbFactory);
var authRepo = new OrmLiteAuthRepository(dbFactory);
container.Register<IUserAuthRepository>(authRepo);
authRepo.InitSchema();