![生成 OAuth 令牌 (Twitter)](https://linux22.com/image/50131/%E7%94%9F%E6%88%90%20OAuth%20%E4%BB%A4%E7%89%8C%20(Twitter).png)
我正在编写一个简单的 bash 脚本来从 Twitter 下载流:
curl -H "Authorization: ${TOKEN}" "$URL"
我正在寻找一种生成$TOKEN
.我拥有所有必要的输入(CONSUMER_KEY,...),但是我在哪里可以获得oauth_sign
从输入数据生成令牌的程序?
TOKEN=$(oauth_sign $CONSUMER_KEY $CONSUMER_SECRET $ACCESS_TOKEN $ACCESS_SECRET GET $URL)
答案1
我刚刚下载了@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
用法
$ ./oauth_sign --help
usage: oauth_sign [-q] consumer_key consumer_key_secret token token_secret method url [name=value ...]
摘自自述文件
要使用它,您需要提供四个加密 cookie 以及请求的方法和 URL。如果是带有额外参数的 POST 请求,您也必须提供这些参数。 Oauth_sign 将所有这些放在一起并形成签名字符串。签名是使用 RFC 第 3.4.2 节中指定的 HMAC-SHA1 生成的,并作为 RFC 第 3.5.1 节中指定的授权标头值返回。然后可以通过 http_get(1) 和 http_post(1) 中的 -h 标志或curl(1) 中的 -H 标志在 HTTP 请求中使用该标头。
看起来它附带了一个库,公开了可以在您自己的 C 应用程序中使用的函数。
答案2
从 Twitter 用户获取流源使用 bash 命令从 Twitter 打开流。 (来自commandlinefu.com)
第 1 步 - 创建四个 oauth 密钥Twitter 流提要所需的。
Step2 - 创建签名基本字符串Twitter 流提要所需的。
步骤 3 - 创建 oauth 令牌Twitter 流提要所需的。
Step4 - 创建授权标头Twitter 流提要所需的。