在ServiceStack客户端中使用OAuth

时间:2013-01-31 02:25:16

标签: oauth servicestack

我试图在客户端上使用OAuth(facebook / twitter),然后使用ServiceStack进行身份验证,我感到很困惑。我看到在客户端进行身份验证的所有示例都使用基本身份验证,如下所示:

var response = _client.Send<AuthResponse>(new Auth
{
    provider = CredentialsAuthProvider.Name,
    UserName = model.Username,
    Password = model.Password,
    RememberMe = true
});

我需要做什么才能通过Facebook验证我的独立客户端?我打电话给FB并获得UID,访问令牌,电子邮件等,那么对服务堆栈的调用是什么?

目前我的想法是在客户端上使用FB进行身份验证,调用服务以检查用户是否存在(查看电子邮件地址)。如果他们没有注册并使用他们的一些数据的哈希作为密码登录。如果它们存在,请以相同方式记录它们。这是合理/最佳的做法吗?

提前致谢

1 个答案:

答案 0 :(得分:2)

我需要做些什么才能通过Facebook验证我的独立客户端? 那么对服务栈进行身份验证的要求是什么?

您可以使用FacebookAuthProvider(https://github.com/ServiceStack/ServiceStack/wiki/Authentication-and-authorization)处理对ServiceStack和Facebook的身份验证。将请求**发布到'/ auth / facebook'(ServiceStack提供的端点)将针对ServiceStack和Facebook进行身份验证。在ServiceStack中,您可以使用UserSession.GetOAuthTokens("facebook")访问Facebook'令牌'。我认为您可以与您的客户共享这些令牌,或者让您的客户通过您创建的ServiceStack端点(访问Facebook)来访问Facebook。类似于TwitterGateway(https://github.com/ServiceStack/SocialBootstrapApi/blob/master/src/SocialBootstrapApi/Logic/TwitterGateway.cs)在SocialBootStrapApi示例中的工作方式。

** {"UserName":"yourname", "Password":"yourpassword", "RememberMe":true/false}