メモ書き。gem gmail
を使いたく。
1. Gmail APIの有効化
初回は https://code.google.com/apis/console/ を開き[Create project...]により
Google Developers Consoleが開かれる。
Gmail API [OFF]を[ON]にする。
2. アクセストークンの取得
サイドバー[認証情報]よりOAuthの[新しいクライアントIDを作成]
「インストールされているアプリケーション」を選び[同意画面を設定]
適当に必要事項を記入して[保存]
再び[新しいクライアントIDを作成]より「インストールされているアプリケーション」を選び[クライアントIDを作成]で
クライアントID、クライアントシークレット、リダイレクトURIが得られる。
リダイレクトURIは何も入力しなければhttp://localhost
である。
3. OAuth認証
cURLが使えることが前提(Windowsは要設定)
(以下の動作は面倒だったのでスクリプト化)
まず、
https://accounts.google.com/o/oauth2/auth
?client_id=#{クライアントID}
&redirect_uri=#{リダイレクトURI}
&scope=https://www.googleapis.com/auth/drive
&response_type=code
&approval_prompt=force
&access_type=offline
を開く。スコープ(権限)は https://developers.google.com/gmail/api/auth/scopes?hl=ja-JP を見て好きなものを選ぶ。
XXXX が次の許可をリクエストしています
[承認する]
で、リダイレクトされる。このときアドレスバーを見ると
http://localhost/?code=HOGEfugaFoobAr~~~~
とあり、code=
以下が認証コードである。
curl -d client_id=#{クライアントID} -d client_secret=#{クライアントシークレット} -d redirect_uri=#{リダイレクトURI} -d grant_type=authorization_code -d code=#{認証コード} https://accounts.google.com/o/oauth2/token
を実行すると、アクセストークンなどが得られる。
3のスクリプト
# 自己入力部分
client_id = "XXXXXXXXXXXXXXXXXX.apps.googleusercontent.com"
client_secret = "XXXXXXXXXXXXXXXXXX"
redirect_uri = "http://localhost"
scope = "https://www.googleapis.com/auth/gmail.compose"
# 自動部分
oauth_url = "https://accounts.google.com/o/oauth2/auth?client_id=#{client_id}&redirect_uri=#{redirect_uri}&scope=#{scope}&response_type=code&approval_prompt=force&access_type=offline"
`open "#{oauth_url}"`
print "認証コード(アドレスバーの?code=以下の部分全て)を入力してエンター:"
code = gets.chomp
puts `curl -d client_id=#{client_id} -d client_secret=#{client_secret} -d redirect_uri=#{redirect_uri} -d grant_type=authorization_code -d code=#{code} https://accounts.google.com/o/oauth2/token`