20 个版本 (有破坏性更新)

0.16.1 2023年2月3日
0.16.0 2021年7月9日
0.15.0 2020年6月11日
0.14.0-beta.12020年3月14日
0.7.0 2016年11月30日

#1 in #tweet

Download history 375/week @ 2024-03-13 439/week @ 2024-03-20 470/week @ 2024-03-27 535/week @ 2024-04-03 363/week @ 2024-04-10 412/week @ 2024-04-17 496/week @ 2024-04-24 410/week @ 2024-05-01 540/week @ 2024-05-08 491/week @ 2024-05-15 508/week @ 2024-05-22 489/week @ 2024-05-29 330/week @ 2024-06-05 294/week @ 2024-06-12 356/week @ 2024-06-19 329/week @ 2024-06-26

1,381 每月下载量
17 个crate中使用 (15 个直接使用)

MPL-2.0 许可证

420KB
5K SLoC

已废弃

status: abandoned

注意:此crate已废弃。有关详细信息,请参阅 https://github.com/egg-mode-rs/egg-mode/issues/132

egg-mode

Rust 的 Twitter 库 构建状态

文档

这是一个用于从 Rust 与 Twitter 交互的库。您可以在文件 TODO.md 中查看公共 API 的可用性。egg-mode 的一个明确目标是尽可能简化库客户端与 Twitter API 的交互。此库的部分功能是作为 API 机制的便利性添加的;例如,用户和推文的游标列表可以用作迭代器,同时也可以手动一次加载一页。

注意:egg-mode 的先前版本包含了一个用于字符计数和提及/标签/URL 提取的twitter-text的端口。这已被提取到其自己的crate中,即 egg-mode-text

MSRV

Rust 1.46 或更高版本

用法

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

[dependencies]
egg-mode = "0.16"

默认情况下,egg-mode 使用 native-tls 进行加密,但也支持 rustls。如果您希望避免链接到 OpenSSL,这可能很有用。要启用,修改您的 Cargo.toml 中的条目

egg-mode = { version = "0.16", features = ["rustls"], default-features = false }

如果您还希望避免使用操作系统的根证书,可以使用特性 rustls_webpki 来启用 rustls 并将 Mozilla 根证书编译到最终二进制文件中,从而绕过操作系统的根证书。要使用此特性,将以下内容放在您的 Cargo.toml

egg-mode = { version = "0.16", features = ["rustls_webpki"], default-features = false }

请参阅 文档 中的可用方法和入门提示。

身份验证

要使用Twitter API,您必须首先在Twitter开发者门户中创建一个“应用”。在继续之前,我们建议您浏览一下入门指南。一旦您注册了您的应用,您将获得一个消费者密钥和密钥(也称为API密钥和密钥),您可以使用它们进行登录。

用户认证并请求访问令牌

// NOTE: this assumes you are running inside an `async` function

let con_token = egg_mode::KeyPair::new("consumer key", "consumer secret");
// "oob" is needed for PIN-based auth; see docs for `request_token` for more info
let request_token = egg_mode::auth::request_token(&con_token, "oob").await.unwrap();
let auth_url = egg_mode::auth::authorize_url(&request_token);

// give auth_url to the user, they can sign in to Twitter and accept your app's permissions.
// they'll receive a PIN in return, they need to give this to your application

let verifier = "123456"; //read the PIN from the user here

// note this consumes con_token; if you want to sign in multiple accounts, clone it here
let (token, user_id, screen_name) =
    egg_mode::auth::access_token(con_token, &request_token, verifier).await.unwrap();

// token can be given to any egg_mode method that asks for a token
// user_id and screen_name refer to the user who signed in

如最后一行所示,这还返回了与您的应用进行认证的用户ID和用户名。有了这个访问令牌,其他所有Twitter功能都可用。

有了这个令牌,您可以获取用户的个人资料信息,如下所示

let rustlang = egg_mode::user::show("rustlang", &token).await.unwrap();

println!("{} (@{})", rustlang.name, rustlang.screen_name);

示例

更多示例在examples文件夹中。要运行它们,您需要创建两个文件examples/common/consumer_keyexamples/common/consumer_secret,分别包含您的消费者密钥和密钥。

其中大多数的认证代码在examples/common/mod.rs中,尽管这主要是为了将访问令牌写入磁盘并重新加载。

examples/bearer.rs是使用应用仅认证来获取Bearer令牌并使用它来加载用户帖子的一个示例。其他示例展示了相关模块的一些动作。

如果您觉得egg-mode很有用,或者只是想分享您对它的第一印象,请在Twitter上找到我并告诉我!

许可协议

此库采用Mozilla Public License,版本2.0许可。有关详细信息,请参阅LICENSE文件。

依赖项

~11–27MB
~441K SLoC