Ruby/Rubyの基礎知識

OAuth 2.0 の認可フローと oauth2 gem を使った Google APIs の利用(3ページ目)

OAuth 2.0 の認可フローを解説し、実例として、Ruby の oauth2 gem を用いて Google APIs の機能を利用する方法を紹介します。

橋本 拓也

執筆者:橋本 拓也

Rubyガイド

oauth2 gem による認可フロー

まずはOAuth2::Client.newでクライアントを生成します。その際に Google 側で登録したクライアントのclient_idclient_secret、その他のパラメータを渡します。

クライアントの生成を単ファイルに切り出しているのは、Authorization Code 取得 URL を出力する部分と Sinatra でリダイレクトを受け取るプロセスの両方から使えるようにするためです。以下に図を再掲します。

oauth2

作成した Client を使い、Authorization Code をリクエストします(1)。

出力される URL にブラウザでアクセスすると(2)(この時点で自分自身はリソースオーナーとして振舞っています)、Google アカウントへログインしたあと、下のような画面でリソースへのアクセスを許可するかどうかの確認を求められます(3)。

al

ここで "Accept" を選ぶと(4)、Authorization Code が発行され(5)、即座にブラウザはクライアントが待ち受けているはずの redirect_url へリソースオーナーを導き...

Firefox can't establish a connection to the server at localhost:8080.

localhost:8080 で受け付けるプロセスを起動し忘れていました。下のコードを走らせて sinatra を 8080 番ポートで listen させ、もう一度 "Accept" します。

今度こそ https://localhost:8080/oauth2callback へリダイレクトされます。渡されたパラメータにはAuthorization Code が含まれているので、あとはクライアントだけでサービスプロバイダとやりとりすることができます(7),(8),(9)。

リソースで遊ぶ - アクセストークンの用例

ここまでの OAuth 2.0 認可フローはどんなサービスでも共通ですが、アクセストークンを得たあとに必要となるリソース API はサービスによって千差万別で、各サービスのドキュメントを参照しながら利用していくことになります。そのため以下の Google Drive API はあくまで利用の一例であることに注意してください。

Google Drive REST API Overview | Drive REST API| Google Developers

Google Spreadsheet のデータを Excel 形式で落としてくることができました。

xx

以上で OAuth 2.0 の紹介は終わりです。OAuth 2.0 は広く使われているため便利なライブラリに隠されてしまいがちですが、一度中で何が行われているのかをじっくり追いかけてみると応用が効くようになり、様々なサービスの API で楽しく遊べます。

【編集部おすすめの購入サイト】
Amazonで Ruby 関連の書籍をチェック!楽天市場で Ruby 関連の書籍をチェック!
  • 前のページへ
  • 1
  • 2
  • 3
※記事内容は執筆時点のものです。最新の内容をご確認ください。
※OSやアプリ、ソフトのバージョンによっては画面表示、操作方法が異なる可能性があります。

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます