#oauth #server #fediverse #apps #info #cesium

cesium-oauth

一个用于与fediverse服务器进行OAuth认证的简单crate

2个版本

0.1.1 2023年7月19日
0.1.0 2023年7月19日

#917 in 认证

MIT许可证

17KB
249

cesium

cesium crate提供了一个简单的接口,用于使用OAuth API与fediverse服务器进行认证。

更多信息,请参阅 https://docs.joinmastodon.org/spec/oauth/


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可能如下所示

https://mastodon.art/oauth/authorize?response_type=code&client_id=EMNn7o4PkKPB5aggs5aHysiY2CY24CUS3AA8sqvwy9Y&redirect_uri=https://example.org&scope=read:accounts

一旦用户登录,它将重定向到提供的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