Skip to content

Instantly share code, notes, and snippets.

@sunny4381
Last active February 13, 2023 05:21
Show Gist options
  • Save sunny4381/99a7b5f78e115b825eb9be33e0a3b3af to your computer and use it in GitHub Desktop.
Save sunny4381/99a7b5f78e115b825eb9be33e0a3b3af to your computer and use it in GitHub Desktop.
# SHIRASAGI OAuth 2.0 IdP 機能を利用したサンプルコード
# このサンプルでは implicit flow を用います。
#
# 実行方法
# bin/rails runner oauth2_sample_with_implicit_flow.rb
# ドメイン
your_domain = "https://localhost:3551/"
# 認可エンドポイントの URL
authorize_url = URI.join(your_domain, "/.mypage/login/oauth2/authorize")
# SHIRASAGI 管理画面で作成したアプリケーションのクライアントID
client_id = ENV.fetch('CLIENT_ID', 'Jfp4HnWFH7Clemq6v09wwiSj')
# SHIRASAGI 管理画面で作成したアプリケーションを作成する際に登録したリダイレクト URL
redirect_uri = ENV.fetch('REDIRECT_URI', 'http://127.0.0.1/cb')
# SHIRASAGI 管理画面で作成したアプリケーションを作成する際に選択した権限
scopes = []
authorize_request = {
response_type: "token",
client_id: client_id,
redirect_uri: redirect_uri,
scope: scopes.join(" ")
}
# コンソールに表示される URL にブラウザでアクセスする
puts "#{authorize_url}?#{authorize_request.to_query}"
# コンソールに表示される URL にブラウザでアクセスすると、シラサギ側のログイン画面が表示される。
# そして、ログインに成功すると redirect_uri に戻ってくる。
# redirect_uri には access_token というパラメータが含まれているので、記録する
access_token = $stdin.readline
access_token.strip!
# 取得したアクセストークンを用いてユーザーアカウント情報を取得する
account_resp = Faraday.new(url: URI.join(your_domain, "/.u/user_account.json")).get do |req|
req.headers['Authorization'] = "Bearer #{access_token}"
end
account_json = JSON.parse(account_resp.body)
puts "email=#{account_json['email']}"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment