Ruby/Rubyの基礎知識

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

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

橋本 拓也

執筆者:橋本 拓也

Rubyガイド

Google 側の準備

Google APIs を利用するにあたり、前もってサービスプロバイダ (= Google) 側でクライアントの登録が必要です。以下の Google Developers Console から作業します。

Google Developers Console

  • 手順(1). Create Project から新規プロジェクト "MyProject" を作成
  • 手順(2). "APIs & auth > APIs" を選択。Gmail, Calendar など様々な API が並んでおり必要なものを Enable 可能ですが、今回は例として Drive API を使ってみます。
apis
  • 手順(3). "APIs & auth > Credentials" を選択、Create New Client ID から新しいクライアントを以下のパラメータで登録します。今回は開発段階としてローカルでクライアント(Rubyプログラム)を動かすためlocalhostの適当なポートを指定しています。
    • Application type = "Web application"
    • Redirect URIs = "http://localhost:8080/oauth2callback"
    • JavaScript origins = "http://localhost:8080"
cred
  • 手順(4). クライアントが登録できたら、"Download JSON" ボタンからクライアント実装に必要となるデータを入手します。次のようなJSONが落ちてきます(一部置換していますが)。

それではこれを使って OAuth 2.0 認可フローを Ruby で進めて行きます。とりあえずの目標は Google Drive のデータにアクセスすることです。

oauth2 と signet について

まず Google APIs における OAuth 2.0 利用情報は以下の公式ドキュメントに詳しく記載されています。

Using OAuth 2.0 to Access Google APIs | Google Identity Platform | Google Developers

Ruby で OAuth 2.0 を使う際にデファクトスタンダードとなっているのが、以下の oauth2 gem です。前述の 4 Grant Types に対応しているほか、入手したアクセストークンを付与してリソースを取得するリクエスト部分もサポートしてくれます。

intridea/oauth2

実のところ、Google APIs に限っては Google が独自に実装した signet という gem が存在しており、Google APIs 機能と OAuth 2.0 認可が統合されているため Google はこちらを使うことを推奨しています。

OAuth 2.0 | API Client Library for Ruby (Alpha) | Google Developers

しかし本記事では解説に汎用性を持たせるため、signet ではなく oauth2 の方を利用していますのでご了承ください。

最後のページでは Google APIs のアクセストークンを入手し、Google Drive のファイル一覧を参照する例を示します。

  • 前のページへ
  • 1
  • 2
  • 3
  • 次のページへ

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

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