gpt4 book ai didi

servicestack -/auth/twitter 未找到

转载 作者:行者123 更新时间:2023-12-02 00:11:51 25 4
gpt4 key购买 nike

我正在努力在我的 ServiceStack 实现中实现 Twitter 身份验证。我正在使用 Social Bootstrap API found here供引用。

在我的应用程序主机中,我有以下代码:

var appSettings = new AppSettings();
Plugins.Add(new SessionFeature());
Plugins.Add(new AuthFeature(
() => new AuthUserSession(),
new IAuthProvider[]
{
new TwitterAuthProvider(appSettings)
}));

在我的 web.config 中指定了以下选项; oauth.twitter.ConsumerKeyoauth.twitter.ConsumerSecretoauth.twitter.RedirectUrloauth.twitter.CallbackUrl.

我在单元测试中使用以下代码来测试 Twitter 身份验证:

var authenticate = restClient.Post<AuthService>(
"/auth/twitter?format=json",
new Auth()
{
UserName = "username",
Password = "password",
RememberMe = true
});

/auth/credentials 适用于我设置的基于 SQL 的身份验证(我删除了为上面的示例注册自定义 AuthProvider 的行)。我收到 /auth/twitter 端点的“未找到”错误。

有什么我想念的吗?我的理解是身份验证端点在 /auth/[provider] 处可用。

我在 Visual Studio 2012 中将服务堆栈版本 3.9.35.0 与 ASP.NET Web 窗体项目一起使用。

最佳答案

不确定是否相关,但 ServiceStack's SocialBootstrap API是一个带有 ServiceStack 的 ASP.NET MVC 应用程序 hosted at /api .因此,如果您收到 404,请尝试使用 /api/ 作为您的路由前缀。

Twitter、Facebook Auth 和所有其他 Open Id providers in ServiceStack需要 html 重定向和手动接受,因此无法像普通的 C# 集成测试那样进行测试。

基本上你需要使用类似 Selenium 的东西这允许您进行完整的端到端集成测试,可以模拟用户使用浏览器。

其他说明:

在使用 C# ServiceClient 时,您永远不想添加前缀 ?format=json因为格式已经在每个请求的 HTTP Accept header 中发送。此外,您通常不需要指定自定义路由,因为如果不存在自定义路由,服务将自动回退到使用 ServiceStack 的预定义路由。

因此,如果您可以使用 C# 客户端测试 Twitter 身份验证,您可以更改:

var restClient = new JsonServiceClient(...);
var authenticate = restClient.Post<AuthService>(
"/auth/twitter?format=json",
new Auth()
{
UserName = "username",
Password = "password",
RememberMe = true
});

这个更简洁的版本:

var restClient = new JsonServiceClient(...);
var authenticate = restClient.Post(new Auth {
provider = "twitter",
UserName = "username",
Password = "password",
RememberMe = true
});

关于servicestack -/auth/twitter 未找到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14801220/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com