erlang-oauthからTwitterに投稿するだけのプログラムがかけたよ
erlang-oauthを利用する。
動いて満足したので、リファクタリングとかしてない。
プログラム
-module(helloworld). -export([hello/0]). hello() -> ssl:start(), Consumer = {"<consumer key>", "consumer secret", hmac_sha1}, RequestTokenURL = "https://api.twitter.com/oauth/request_token", {ok, RequestTokenResponse} = oauth:get(RequestTokenURL, [], Consumer), RequestTokenParams = oauth:params_decode(RequestTokenResponse), RequestToken = oauth:token(RequestTokenParams), RequestTokenSecret = oauth:token_secret(RequestTokenParams), {_, _, OauthToken} = RequestTokenResponse, AuthorizeURL = "https://api.twitter.com/oauth/authorize", io:format("confirm : ~s?~s~n", [AuthorizeURL, OauthToken]), io:format("input PIN : "), UserInput = io:get_line(standard_io,''), Pin = string:substr(UserInput, 1, length(UserInput)-1), AccessTokenURL = "https://api.twitter.com/oauth/access_token", {ok, AccessTokenResponse} = oauth:get(AccessTokenURL, [{"oauth_verifier", Pin}], Consumer, RequestToken, RequestTokenSecret), AccessTokenParams = oauth:params_decode(AccessTokenResponse), AccessToken = oauth:token(AccessTokenParams), AccessTokenSecret = oauth:token_secret(AccessTokenParams), URL = "http://api.twitter.com/1/statuses/update.json", {ok, Response} = oauth:post(URL, [{"status", "hello erlang-oauth world!"}], Consumer, AccessToken, AccessTokenSecret).
実行する
$ erl -pa ebin -s crypto -s inets 1> c(helloworld). WARNINGが出るけど無視。 2> helloworld:hello(). confirm : https://api.twitter.com/oauth/authorize?oauth_token=hogehogehogehoge ↑ URLが表示されるので、アクセスして認証する。 input PIN : ↑ 上のURLで認証するとPINが表示されるので入力する 何か表示される。文字列の中に「200, "OK"」があればOK