#oauth #firebase #notifications #oauth-token #fcm #push #push-notifications

oauthfcm

用于发送数据通知 Firebase 云消息 (FCM) 的库

2 个不稳定版本

新功能 0.2.0 2024 年 8 月 7 日
0.1.0 2024 年 4 月 29 日

921网页编程

Download history 139/week @ 2024-04-25 17/week @ 2024-05-02 6/week @ 2024-05-16 5/week @ 2024-05-23 52/week @ 2024-08-01

每月下载 55

MIT 许可证

31KB
402

OAuth FCM 库

crates.io GitHub Actions Workflow Status docs.rs GitHub License

该库旨在简化发送 Firebase 云消息 (FCM) 的过程。它为您处理 OAuth 令牌,确保在令牌过期时刷新令牌,并提供发送 FCM 数据和通知消息的简单接口。

安装

将以下内容添加到您的 Cargo.toml 文件中

[dependencies]
oauth_fcm = "0.2.0"

使用方法

axum 的简单示例。更多框架的详细示例可以在示例文件夹中找到。

use std::fs::File;
use oauth_fcm::{create_shared_token_manager, send_fcm_message, FcmNotification, SharedTokenManager};

#[derive(serde::Serialize)]
struct YourDataType {
    // Your data here
    key: String,
}

async fn send_notification_route(Extension(token_manager): Extension<SharedTokenManager>, ) {
    let data = YourDataType {
        key: "value".to_string(),
    };
    let notification = FcmNotification {
        title: "Title".to_string(),
        body: "Body".to_string(),
    };
    send_fcm_message("DEVICE_TOKEN", Some(notification), Some(data), &token_manager, "PROJECT_ID").await.unwrap();
}

#[tokio::main]
async fn main() {
    let shared_token_manager =
        create_shared_token_manager(File::open("path/to/google/credentials.json")).expect("Could not find credentials.json");

    let app = Router::new()
        .route("/send", post(send_notification_route))
        .layer(Extension(shared_token_manager));

    let listener = tokio::net::TcpListener::bind(format!("{}:{}", "127.0.0.1", "8080")).await.unwrap();

    axum::serve(listener, app).await.unwrap();
}

如何获取您的 FCM 凭证

  1. 创建 Firebase 项目或使用Firebase 控制台中的现有项目
  2. 转到 Firebase 项目设置并选择“服务帐户”选项卡
  3. 点击旁边的 Google 云图标旁边的“所有服务帐户”。您将被重定向到 Google 云控制台
  4. 在云控制台中,在左侧的抽屉菜单中选择“服务帐户”
  5. 在那里选择您的 Firebase 服务帐户,名称为:firebase-adminsdk-xyz@your-project.iam.gserviceaccount.com
  6. 点击“密钥”选项卡,并在“添加密钥”下创建新的 JSON 格式密钥。它将被下载
  7. 现在您可以通过从环境文件或文件路径提供文件位置来在项目中使用它,并将其提供给 TokenManager
    let shared_token_manager =
         create_shared_token_manager(File::open("location/your-key-name-xyz.json").unwrap())
             .expect("Failed to create SharedTokenManager");
    
  8. (可选) 最好不要将文件保存在版本控制中。将其添加到您的 .gitignore 文件中:your-key-name-*.json

示例

有关更详细的示例,请参阅存储库中的 示例 目录。在那里您可以找到针对 RocketAxum 的示例实现。您可以随意为任何其他框架打开合并请求。

贡献

请阅读 CONTRIBUTING.md 以了解贡献的详细信息。通过贡献,您同意在项目的 许可证 下许可您的代码。

许可证

基于 MIT 许可证

除非您明确声明,否则您有意提交以包含在此包中的任何贡献,将按 MIT 许可证许可,不附加任何额外的条款或条件。

依赖项

~12–25MB
~469K SLoC