#server-side #oauth2 #apps #installed #handles #don't #flow

bin+lib oauth2_noserver

处理没有服务器端的已安装应用的oauth2流程

3个版本

0.1.2 2019年3月5日
0.1.1 2019年2月25日
0.1.0 2019年2月21日

874 in 身份验证

MIT许可证

13KB
104

oauth2-noserver-rs

处理没有服务器端的已安装应用的oauth2流程。

Oauth是为了让第三方服务器访问你的数据而设计的。这使得当您只想让用户通过仅在他们的计算机上运行的软件访问其数据时,它变得有些过于复杂。该项目旨在作为库,为Rust项目极大地简化这一点。

快速开始

一旦你有了oauth2配置...

let oauthConfig = oauth2::Config::new(
    "someID",
    "someSECRET",
    "https://accounts.google.com/o/oauth2/v2/auth",
    "https://www.googleapis.com/oauth2/v3/token",
)
.add_scope("https://www.googleapis.com/auth/calendar")
.add_scope("https://www.googleapis.com/auth/plus.me");

...使用这个打开浏览器,要求用户连接到服务,并将令牌返回到您的程序以代表用户进行操作

let authenticator = oauth2_noserver::Authenticator::new(oauthConfig);
authenticator.authenticate().unwrap();

安装

将以下内容添加到您的Cargo.toml中:oauth2_noserver = "0.1.2"

先决条件

  • Rust 1.32+
  • 在您想要的服务上注册一个oauth应用
    • 使用您的认证器的重定向URL进行配置:默认情况下,https://127.0.0.1:14565/oauth/callback,或者用您在Authenticator.set_redirect_url()中指定的URL替换。
    • 创建后获取凭据(client_id和client_secret)。这些都是您需要创建oauth2::Config所必需的。

配置

  • Authenticator.set_port(port):库将在该端口上启动一个临时服务器,等待从服务接收令牌。在认证器配置和创建您的OAuth凭据时使用相同的端口,在Optional中默认为14565。
  • Authenticator.set_redirect_url(Into<String>):将其设置为在服务上创建OAuth应用时使用的相同重定向URL。默认情况下,https://127.0.0.1:14565/oauth/callback

示例

最小示例

fn main() -> Result<(), Box<std::error::Error>> {
    let oauthConfig = Oauth2Config::new(
        "someID",
        "someSECRET",
        "https://accounts.google.com/o/oauth2/v2/auth",
        "https://www.googleapis.com/oauth2/v3/token",
    )
    .add_scope("https://www.googleapis.com/auth/calendar")
    .add_scope("https://www.googleapis.com/auth/plus.me");

    let authenticator = oauth2_noserver::Authenticator::new(oauthConfig);
    authenticator.authenticate().unwrap();

    Ok(())
}

## 完全配置

fn main() -> Result<(), Box<std::error::Error>> {
    let oauthConfig = Oauth2Config::new(
        "someID",
        "someSECRET",
        "https://accounts.google.com/o/oauth2/v2/auth",
        "https://www.googleapis.com/oauth2/v3/token",
    )
    .add_scope("https://www.googleapis.com/auth/calendar")
    .add_scope("https://www.googleapis.com/auth/plus.me");

    const PORT: u16 = 14565;
    let authenticator = oauth2_noserver::Authenticator::new(oauthConfig)
        .set_port(PORT)
        .set_redirect_url(format!("https://127.0.0.1:{}/oauth/callback", PORT));
    authenticator.authenticate().unwrap();

    Ok(())
}

依赖关系

~10–19MB
~309K SLoC