Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
9
Help us understand the problem. What is going on with this article?
@kogache

OAuth2 gemでGoogle Api よりaccess tokenを取得する

More than 3 years have passed since last update.

OAuth2 gemでrailsのWEBアプリケーションとGoogle Api のOAuth連携を試す。

前提

  • Google Cloud Platform にログインし、コンソール>APIとサービス>認証情報より、新規プロジェクト、OAuth クライアントIDを作成。
  • railsアプリケーションにOAuth2 gemをインストール済み。

実装

お試しなのでcontroller に直接実装したが、moduleにでも出す。

oauth_controller.rb
require 'oauth2'

# google の認可サーバにリクエスト
def authorization
  client = OAuth2::Client.new(
    CLIENT_ID,
    CLIENT_SECRET,
    {
      site: 'https://accounts.google.com/',
      authorize_url: 'o/oauth2/auth',
    }
  )
  redirect_to client.auth_code.authorize_url(
    redirect_uri: 'http://localhost:8080/oauth/callback',
    scope: SCOPE_CODE,
    # see about scopes: https://developers.google.com/identity/protocols/googlescopes
  )
end

# パラメータで認可コード(code)を取得し、access_tokenをリクエスト・取得する。
def callback
  client = OAuth2::Client.new(
    CLIENT_ID,
    CLIENT_SECRET,
    {
      site: 'https://accounts.google.com/',
      token_url: 'o/oauth2/token',
    }
  )
  # 認可コードよりaccess_tokenをリクエスト・取得。
  token = client.auth_code.get_token(
    params[:code],
    redirect_uri: 'http://localhost:8080/oauth/callback',
  )
  # 適当なAPIを叩く
  response = token.get(
    'https://www.googleapis.com/plus/v1/people/me/activities/public'
  )
end

備考

  • このとり方ではrefresh_tokenはとれなかったので、別途対処が必要。
  • 例外処理は考えていない。
  • アプリケーションでアカウント認証が必要な場合はその処理も必要。
    今回、アカウントは作らないので、authoraization でsessionを作成し、callbackでsession取得・削除することとした。

参考

9
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
9
Help us understand the problem. What is going on with this article?