20 个版本 (有破坏性更新)
0.16.1 | 2023年2月3日 |
---|---|
0.16.0 | 2021年7月9日 |
0.15.0 | 2020年6月11日 |
0.14.0-beta.1 | 2020年3月14日 |
0.7.0 | 2016年11月30日 |
#1 in #tweet
1,381 每月下载量
在 17 个crate中使用 (15 个直接使用)
420KB
5K SLoC
已废弃
注意:此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_key
和examples/common/consumer_secret
,分别包含您的消费者密钥和密钥。
其中大多数的认证代码在examples/common/mod.rs
中,尽管这主要是为了将访问令牌写入磁盘并重新加载。
examples/bearer.rs
是使用应用仅认证来获取Bearer令牌并使用它来加载用户帖子的一个示例。其他示例展示了相关模块的一些动作。
如果您觉得egg-mode很有用,或者只是想分享您对它的第一印象,请在Twitter上找到我并告诉我!
许可协议
此库采用Mozilla Public License,版本2.0许可。有关详细信息,请参阅LICENSE文件。
依赖项
~11–27MB
~441K SLoC