#oauth #twitter #client #rfc #url #f-ckin

oauthcli

OAuth 1.0(以及Twitter的f*ckin' OAuth)客户端实现

17个版本 (5个稳定版)

使用旧的Rust 2015

2.0.0-beta-22017年9月3日
2.0.0-beta-12017年6月25日
1.0.7 2017年6月22日
1.0.3 2017年1月14日
0.0.6 2015年2月21日

#422认证


用于 2 crate

MIT/Apache

25KB
506 代码行

oauthcli

crates.io

另一个Rust的OAuth 1.0客户端库

特性

  • RFC 5849实现(不含RSA-SHA1)
  • 兼容Twitter的(f*ckin')实现

使用方法

extern crate oauthcli;
extern crate url;

let header =
  oauthcli::OAuthAuthorizationHeaderBuilder::new(
    "POST",
    url::Url::parse("https://example").unwrap(),
    "Consumer Key",
    "Consumer Secret",
    oauthcli::SignatureMethod::HmacSha1 // or Plaintext
  )
  .token("OAuth Token", "OAuth Token Secret")
  .request_parameters(vec![("status", "hello")].into_iter())
  .finish();

assert_eq!(header.to_string(), "OAuth ......")

帮助我

oauthcli 已达到v1.0.0,尽管 ring 仍不稳定。对于不破坏兼容性,我应该怎么做?


lib.rs:

另一个Rust的OAuth 1.0客户端库

示例

基本示例

use oauthcli::*;
let url = url::Url::parse("http://example.com/").unwrap();
let header =
    OAuthAuthorizationHeaderBuilder::new(
        "GET", &url, "consumer", "secret", SignatureMethod::HmacSha1)
    .token("token", "secret")
    .finish();

如果你用于Twitter,由于Twitter的错误,请使用 finish_for_twitter 方法,并确保使用 OAUTH_ENCODE_SET 编码请求体。更多详情,请参阅这篇文章(日语)。

依赖关系

~8–16MB
~308K SLoC