6 个稳定版本

1.1.3 2023 年 11 月 28 日
1.1.1 2023 年 10 月 21 日
1.1.0 2023 年 10 月 18 日
1.0.7 2023 年 10 月 18 日

#620 in 身份验证

Download history 5/week @ 2024-03-10 1/week @ 2024-03-17 33/week @ 2024-03-31 1/week @ 2024-04-07 1/week @ 2024-05-19

每月 97 次下载
用于 codr

MIT 许可证

54KB
794

onedrive

与 OneDrive 交互的包。

用法

为了使用此包,您需要提供自己的 Microsoft OAuth2 凭据(请参阅此处的官方说明),以便正常工作。

如何获取 Microsoft OAuth2 凭据

以下步骤概述了如何获取这些凭据。

  • 使用以下重定向 URI 注册 Web 应用程序:
    • Redirect URIhttps://127.0.0.1:<REDIRECT_PORT><REDIRECT_ENDPOINT>
      • <REDIRECT_PORT> 默认为 8080
      • <REDIRECT_ENDPOINT> 默认为 /redirect
    • 支持的账户类型:任何组织目录中的账户和个人 Microsoft 账户
  • 在左侧菜单中选择 概览。将 应用程序 (客户端) ID 复制为 MSGRAPH_CLIENT_ID
  • 在左侧菜单中选择 证书 & 机密 并添加一个新的客户端机密。将机密值复制为 MSGRAPH_CLIENT_SECRET
  • 在左侧菜单中选择 API 权限 并添加一个权限,然后选择 Microsoft Graph委派权限。现在添加 Files.Read 权限(以及必要的其他权限)。

示例用法

添加

cargo add onedrive

获取 MSGraph 令牌

use onedrive::{GraphTokenObtainer, TokenObtainer};
use std::env;
use std::time::SystemTime;

fn setup_logger(log_level: log::LevelFilter) -> Result<(), fern::InitError> {
    fern::Dispatch::new()
        .format(|out, message, record| {
            out.finish(format_args!(
                "[{} {} {} {}:{}] {}",
                humantime::format_rfc3339_seconds(SystemTime::now()),
                record.level(),
                record.target(),
                record.file().unwrap_or("unknown"),
                record.line().unwrap_or(0),
                message
            ))
        })
        .level(log_level)
        .chain(std::io::stdout())
        .chain(fern::log_file("output.log")?)
        .apply()?;
    Ok(())
}

fn main() {
    setup_logger(log::LevelFilter::Info).unwrap();

    let token_obtainer = GraphTokenObtainer {
        client_id: env::var("MSGRAPH_CLIENT_ID")
            .expect("Missing the MSGRAPH_CLIENT_ID environment variable."),
        client_secret: env::var("MSGRAPH_CLIENT_SECRET")
            .expect("Missing the MSGRAPH_CLIENT_SECRET environment variable."),
        access_scopes: vec![
            "https://graph.microsoft.com/Files.Read".to_string(),
            "https://graph.microsoft.com/User.Read".to_string(),
            "https://graph.microsoft.com/Files.Read.All".to_string(),
        ],
        auto_open_auth_url: true,
        redirect_endpoint: Some("/redirect".to_string()),
        redirect_port: Some(8080),
    };

    // This token can then be used to start interacting with MSGraph
    println!(
        "Token={:?}",
        token_obtainer.get_token().unwrap().access_token()
    )
}

与 OneDrive 交互

请检查codr中的源代码,以了解如何使用此包与 OneDrive 交互。

哪些使用了此包?

此包的开发是为了帮助codr与 OneDrive 交互。

注意

[!警告] 这是我第一个Rust项目,使用时请谨慎...

依赖项

~12–31MB
~479K SLoC