Skip to content

Instantly share code, notes, and snippets.

@fukata
Created October 3, 2022 07:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fukata/5fd590eed5ab45a1361cf511842e114f to your computer and use it in GitHub Desktop.
Save fukata/5fd590eed5ab45a1361cf511842e114f to your computer and use it in GitHub Desktop.
Tweet by Twitter API v2
#!/usr/bin/env ruby
require 'oauth'
require 'json'
require 'typhoeus'
require 'oauth/request_proxy/typhoeus_request'
def create_tweet(url, oauth_params, payload)
options = {
method: :post,
headers: {
"User-Agent": "v2CreateTweetRuby",
"content-type": "application/json",
},
body: JSON.dump(payload)
}
request = Typhoeus::Request.new(url, options)
oauth_helper = OAuth::Client::Helper.new(request, oauth_params.merge(request_uri: url))
request.options[:headers].merge!({"Authorization" => oauth_helper.header}) # Signs the request
response = request.run
return response
end
def main
consumer_key = ENV['TWITTER_API_KEY']
consumer_secret = ENV['TWITTER_API_SECRET_KEY']
access_token = ENV['TWITTER_ACCESS_TOKEN']
access_token_secret = ENV['TWITTER_ACCESS_TOKEN_SECRET']
consumer = OAuth::Consumer.new(consumer_key, consumer_secret,
site: 'https://api.twitter.com',
authorize_path: '/oauth/authenticate',
debug_output: true)
token = OAuth::AccessToken.new(consumer, access_token, access_token_secret)
oauth_params = {consumer:consumer, token: token}
create_tweet_url = "https://api.twitter.com/2/tweets"
payload = {text: "HELLO"}
pp create_tweet(create_tweet_url, oauth_params, payload)
end
main
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment