18 个稳定版本 (4 个主要版本)
新版本 4.1.1 | 2024年8月16日 |
---|---|
3.2.0 | 2024年8月1日 |
3.1.1 | 2024年7月26日 |
2.5.0 | 2024年5月20日 |
0.2.1 | 2022年3月13日 |
#27 in 身份验证
643 每月下载量
625KB
6.5K SLoC
Stytch Rust 库
Stytch Rust 库使得在服务器端 Rust 应用程序中使用 Stytch 用户基础设施 API 变得容易。
它与 Stytch Web SDK 或您自己的自定义身份验证流程配合良好。
此库支持的最小 Rust 版本 (MSRV) 是 Rust 1.70。
安装
使用 cargo add stytch
将其添加到您的 Cargo.toml
stytch = "4.1.1"
用法
您可以在 Stytch 控制台 中找到您的 API 凭证。
此客户端库支持 Stytch 的所有实时产品
B2C
B2B
共享
B2C 用例示例
创建 API 客户端
let client = stytch::consumer::client::Client::new(
String::from("project-live-c60c0abe-c25a-4472-a9ed-320c6667d317"),
String::from("secret-live-80JASucyk7z_G8Z-7dVwZVGXL5NT_qGAQ2I="),
)?;
通过电子邮件发送魔法链接
use stytch::consumer::magic_links_email::LoginOrCreateRequest;
let resp = client.magic_links.email.login_or_create(LoginOrCreateRequest{
email: String::from("[email protected]"),
login_magic_link_url: Some(String::from("https://example.com/authenticate")),
signup_magic_link_url: Some(String::from("https://example.com/authenticate")),
..Default::default()
}).await?;
验证魔法链接中的令牌
use stytch::consumer::magic_links::AuthenticateRequest;
let resp = client.magic_links.authenticate(AuthenticateRequest {
token: String::from("DOYoip3rvIMMW5lgItikFK-Ak1CfMsgjuiCyI7uuU94="),
..Default::default()
})
.await?;
B2B 用例示例
创建 API 客户端
let client = stytch::b2b::client::Client::new(
project_id: "project-live-c60c0abe-c25a-4472-a9ed-320c6667d317",
secret: "secret-live-80JASucyk7z_G8Z-7dVwZVGXL5NT_qGAQ2I=",
)?;
创建组织
use stytch::b2b::organizations::CreateRequest;
let resp = client.organizations.create(CreateRequest{
organization_name: String::from("Acme Co"),
organization_slug: Some(String::from("acme-co")),
email_allowed_domains: Some(vec![String::from("acme.co")]),
..Default::default()
})
.await?;
将第一个用户登录到组织
use stytch::b2b::magic_links_email::LoginOrSignupRequest;
let resp = client.magic_links.email.login_or_signup(LoginOrSignupRequest{
organization_id: String::from("organization-id-from-create-response-..."),
email_address: String::from("[email protected]"),
..Default::default()
})
.await?;
错误处理
所有 Result
值的错误类型是 stytch::Error
。如果错误来自 Stytch API,这将是一个 stytch::Error::Response
变体,它始终包含一个 error_type
字段,您可以使用它来识别它
let resp = client.magic_links.authenticate(AuthenticateRequest{
token: String::from("not-a-token!"),
..Default::default()
})
.await;
match resp {
Err(stytch::Error::Response(err)) => {
if &err.error_type == "invalid_token" {
println!("Whoops! Try again?");
} else {
println!("Unexpected error type: {}", err.error_type);
}
}
Err(err) => println!("Other error: {:?}", err),
Ok(resp) => println!("Unexpected success: {:?}", resp),
}
有关错误的更多信息,请参阅 文档。
Cargo 功能
reqwest-rustls-tls
:启用 reqwest 的rustls-tls
功能,以使用 rustls 实现方案。reqwest-native-tls
:启用 reqwest 的native-tls
功能,以使用本地 TLS 实现方案。(此选项默认启用。)
文档
请参阅 Stytch API 参考文档 中所有端点的示例请求和响应。
支持
如果您发现了错误,请 提交一个问题!
如果您有任何问题或需要帮助进行故障排除,请加入我们的 Slack 或发送邮件至 [email protected]。
如果您发现了安全漏洞,请遵循我们的 负责任披露指南。
开发
请参阅 DEVELOPMENT.md
行为准则
所有在 Stytch 项目的代码库、问题跟踪器、聊天室和邮件列表中互动的人都有义务遵守 行为准则。
致谢
特别感谢 @itsyaasir 向此项目捐赠了 stytch
包名,并开始了我们的 Rust 之旅!
依赖项
~5–17MB
~257K SLoC