Twitter gemは非常に優秀ですので、低レイヤーなOAuth gemを使ってTwitter APIにアクセスする必要はまずありません。
ただし、「Twitterからの応答をちゃんと返してくれているのだろうか?」と疑問があったときに、gemを介さずに直接アクセスする手段を知っておくことは大切なことだと思います。
#APIエンドポイント
REST API v1.1 Resources | Twitter Developers
で確認してください。
#必要なもの
##OAuth gem
$ gem install oauth
しておきます。
ライブラリとして
require 'json'
require 'oauth'
が必要です。
Twitter APIの返答がJSONなのでライブラリを入れています。
##Twitter APIのconsumer key/secret、access token/secret
例を挙げておきます(もちろんニセモノ)。
consumer_key = '9Gu1FiE1IfKi32bR8Fw'
consumer_secret = 'QUnRDVcl5FNCZ9C1j80OAjUJlguMNVyqbdrOrnjtQ'
access_token = '2194235326-sm2SUkVRHMJ1CdwYG1f04klQMlxc4i05tkSbnZa'
access_token_secret = 'oairK8FMvLZ8dqEVrCgh2brhyL0SCd5wpdkIoNxz62Jdi'
取得方法はtwitter OAuthのアクセストークンを取得 - 別館 子子子子子子(ねこのここねこ)を参考にしてください。
#使い方の例
require 'json'
require 'oauth'
consumer_key = <consumer_key>
consumer_secret = <consumer_secret>
access_token = <access_token>
access_token_secret = <access_token_secret>
consumer = OAuth::Consumer.new(
consumer_key,
consumer_secret,
site:'https://api.twitter.com/'
)
endpoint = OAuth::AccessToken.new(consumer, access_token, access_token_secret)
# GET
response = endpoint.get(<API_ENDPOINT_URL>)
result = JSON.parse(response.body)
# POST
response = endpoint.post(<API_ENDPOINT_URL>, {<PARAMETER_HASH>})
result = JSON.parse(response.body)
#GETの例:@twitterapiのツイート履歴を見る
GET statuses/user_timeline | Twitter Developersに載っている例です。
APIのエンドポイントURLは次の通りです。
GET https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=twitterapi&count=2
アカウント名がtwitterapiのツイートを2つ取得する、ということです。パラメータに関しては上のリンクから確認してください。
response = endpoint.get('https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=twitterapi&count=2')
=> #<Net::HTTPOK 200 OK readbody=true>
返答はNet::HTTPOK
クラスのオブジェクトですのでresponse.body
でbodyが取得できます。JSONなのでJSON.parse(response.body)
で戻せます。
#POSTの例:ツイートする
POST statuses/update | Twitter Developers
に載っている例です。APIのエンドポイントURLは次の通りです。
ツイートに日本語が使えるか気になりますので
tweet messageには 日本語が使えます。
という文をツイートしてみましょう。
ツイート文はPOSTデータに入れるのですが、以下のようにハッシュで渡します。
response = endpoint.post('https://api.twitter.com/1.1/statuses/update.json', status: 'tweet messageには 日本語が使えます。')
=> #<Net::HTTPOK 200 OK readbody=true>
##ツイート結果
半角スペースも日本語も問題なく使えています。
#参考
本記事の詳しい内容(APIの返答やインスタンスの状況など)は
OAuth gemだけでTwitter APIを使ってみる - 別館 子子子子子子(ねこのここねこ)
に記載しています。
また、Twitterの新機能をAPIアクセスできるか確認した記事もあります。
ツイッター新機能がAPIに反映されてるか:写真へのタグ付けと写真4枚添付可能 - 別館 子子子子子子(ねこのここねこ)
OAuth gemでのアクセス方法に関してはTwitter公式の記事を参考にしました。
Single-user OAuth with Examples | Twitter Developers