LoginSignup
75
75

More than 5 years have passed since last update.

Google API OAuth2.0のトークン取得手順

Last updated at Posted at 2015-03-13

メモ書き。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のスクリプト

fetch.rb
# 自己入力部分
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`

参考

75
75
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
75
75