2个版本
0.1.1 | 2023年7月19日 |
---|---|
0.1.0 | 2023年7月19日 |
#917 in 认证
17KB
249 行
cesium
cesium
crate提供了一个简单的接口,用于使用OAuth API与fediverse服务器进行认证。
lib.rs
:
cesium
cesium-oauth
crate提供了一个简单的接口,用于使用OAuth API与fediverse服务器进行认证。
更多信息,请参阅 https://docs.joinmastodon.org/spec/oauth/
以下示例中,我们使用https://mastodon.art实例。这纯粹是一个示例,几乎所有fediverse实例(mastodon、calckey、pixelfed等)都应该可以工作。
应用
为了与fediverse服务器进行认证,您首先需要注册一个应用程序。为此,您可以调用[apps::register_new_app()]。但是,您可能不需要为每次认证尝试都注册新的应用程序。此crate提供了一个简单的基于文件的实现来缓存您的应用程序,请参阅apps::FileCachedAppProvider。如果它需要为特定服务器注册一个新应用程序,它将自动注册一个新应用程序。
基本用法
let app_info = AppInfo::new("Test App", "https://example.org");
let mut provider = FileCachedAppProvider::new("apps.toml", app_info)?;
let registered_app = provider.get_app_for("mastodon.art").await?;
认证
一旦您有了应用程序,认证就非常简单。让您的用户导航到以下URL https://[实例域名]/oauth/authorize?response_type=code&client_id=[CLIENT ID]&redirect_uri=[REDIRECT_URI]&scope=read:accounts
将占位符替换为适当的值。客户端ID可以在apps::RegisteredApp中找到。一个示例授权URL可能如下所示
一旦用户登录,它将重定向到提供的redirect_uri
,并带有作为GET参数的code
字段。您需要此代码进行下一步操作
let token = auth::get_auth_token("mastodon.art", "[CODE]", &app, &app_info).await?;
let account = auth::verify_credentials("mastodon.art", &token.access_token).await?;
如果此操作不产生错误,则认证成功。它返回的auth::Account结构体包含有关用户的一些基本信息。
依赖关系
~4–18MB
~242K SLoC