#oauth2 #scope #google #server-side #built #enums #authentication

tlns-google-oauth2

一个集成的Google OAuth2服务器端支持,内置Scopes枚举以提供额外的类型安全。

9个不稳定版本 (3个破坏性更新)

0.4.1 2024年7月13日
0.4.0 2024年7月4日
0.3.1 2024年7月1日
0.2.2 2024年7月1日
0.1.1 2024年6月29日

#124过程宏

Download history 221/week @ 2024-06-24 544/week @ 2024-07-01 107/week @ 2024-07-08 9/week @ 2024-07-15

每月779次下载

MIT 许可证

39KB
98

tlns-google-oauth2

一个带有内置范围枚举的Google OAuth2服务器端认证,提供额外的类型安全。

生成范围枚举(仅针对进程宏库部分)

前往 Google OAuth2 范围列表,并从文档底部表格的第一行开始复制到最后一行。 显示第一行蓝色标题的图片 显示表格最后一行的图片 然后将所有这些粘贴到 info.txt 并构建库,它将提供所有可能的范围!

用法 (crate::grouped_scopes)

use tlns_google_oauth2::GoogleOAuth2Client as Client;
use tlns_google_oauth2::scopes;
let client = Client::new("CLIENT_ID".to_string(), "CLIENT_SECRET".to_string(), "https://127.0.0.1:8080/callback".to_string()).expect("Failed to build client");
let auth = client.authorize_url(None, vec![&scopes::GoogleOAuth2APIv2::AuthUserinfoProfile]).unwrap();
let url = auth.0;
let csrf_token = auth.1;
let scopes = auth.2;

// ... Callback codes here (You can't save states in oauth2 crate for some reasons :( )

let code = "...";
let token = client.get_token(code.to_string()).await.unwrap();
// Do request stuff

用法 (crate::scopes::Scopes)

use tlns_google_oauth2::GoogleOAuth2Client as Client;
use tlns_google_oauth2::scopes;
let client = Client::new("CLIENT_ID".to_string(), "CLIENT_SECRET".to_string(), "https://127.0.0.1:8080/callback".to_string()).expect("Failed to build client");
let auth = client.authorize_url(None, vec![&scopes::Scopes::AuthUserinfoProfile]).unwrap();
let url = auth.0;
let csrf_token = auth.1;
let scopes = auth.2;

// ... Callback codes here (You can't save states in oauth2 crate for some reasons :( )

let code = "...";
let token = client.get_token(code.to_string()).await.unwrap();
// Do request stuff

致谢

感谢 heapunderfl0w 提出进程宏的想法,而不是糟糕的 Jinja2 实现!

依赖

~8–22MB
~335K SLoC