为 OAuth (Twitter) 生成令牌

Mar*_*ter 4 bash cryptography

我正在编写一个简单的 bash 脚本来从 Twitter 下载流:

curl -H "Authorization: ${TOKEN}" "$URL"
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种方法来生成$TOKEN. 我有所有必要的输入(CONSUMER_KEY,...),但是我在哪里可以获得oauth_sign将从输入数据生成令牌的程序?

TOKEN=$(oauth_sign $CONSUMER_KEY $CONSUMER_SECRET $ACCESS_TOKEN $ACCESS_SECRET GET $URL)
Run Code Online (Sandbox Code Playgroud)

slm*_*slm 5

我刚刚下载了@goldilocks 提供的链接,http: //acme.com/software/oauth_sign/ ,并确认它可以编译。看起来很直接。

编译

$ make
gcc -c -Wall -O liboauthsign.c
liboauthsign.c: In function ‘oauth_sign’:
liboauthsign.c:123:5: warning: implicit declaration of function ‘getpid’
liboauthsign.c:305:5: warning: pointer targets in passing argument 4 of ‘HMAC’ differ in signedness
/usr/include/openssl/hmac.h:99:16: note: expected ‘const unsigned char *’ but argument is of type ‘char *’
rm -f liboauthsign.a
ar rc liboauthsign.a liboauthsign.o
ranlib liboauthsign.a
gcc -Wall -O oauth_sign.c -L. -loauthsign -lcrypto -o oauth_sign
Run Code Online (Sandbox Code Playgroud)

用法

$ ./oauth_sign --help
usage:  oauth_sign [-q] consumer_key consumer_key_secret token token_secret method url [name=value ...]
Run Code Online (Sandbox Code Playgroud)

摘自自述文件

要使用它,您需要提供四个加密 cookie 以及请求的方法和 URL。如果它是带有额外参数的 POST 请求,您也必须提供这些参数。Oauth_sign 将所有这些放在一起并生成签名字符串。签名是使用 RFC 3.4.2 节中指定的 HMAC-SHA1 生成的,并作为 RFC 3.5.1 节中指定的 Authorization 标头值返回。然后可以在 HTTP 请求中使用此标头,例如通过 http_get(1) 和 http_post(1) 中的 -h 标志或 curl(1) 中的 -H 标志。

看起来它带有一个库,公开了在您自己的 C 应用程序中使用的功能。