ServiceStack Twitter身份验证和注册

时间:2015-04-01 22:11:10

标签: twitter servicestack servicestack-auth

我有一个使用CredentialsAuthProvider()运行一段时间的应用程序。

今天,我想添加Twitter和Facebook作为人们创建帐户的选项。我有脚手架到位了。

  //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工作,我看到OAuth进程完成后访问/ api / auth创建了一个用户会话但是......

我的UserAuthRepository(OrmLiteAuthRepository)中没有创建用户。存储在会话中的用户ID无效。使用[Authenticate]属性修饰的任何方法都会返回404(User not found)错误。

我希望用Facebook或Twitter获得的第一个/最后一个/电子邮件创建用户。我误解了什么吗?

ServiceStack v4.0.38

2 个答案:

答案 0 :(得分:1)

要检查的一些事项是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();

答案 1 :(得分:0)

我想更新此帖子以表示我已升级到ServiceStack 4.0.42并且此问题已自行解决。