Help us understand the problem. What is going on with this article?

Webアプリケーションの認証にSNS連携を行う際に参考になるサイト

More than 1 year has passed since last update.

概要

Webアプリケーションの認証に、SNS連携をSDKを使用せずRest API(若しくはサードパーティライブラリ)で行いたいときに参考になるサイトのまとめです。

Facebook

Official

Endpoint

ログインダイアログ

EndPoint
https://www.facebook.com/v2.8/dialog/oauth

Parameter

Parameter Value
client_id アプリのID
redirect_uri ログイン後にリダイレクトするURL
state CSRF対策のアプリが作成する任意で固有の文字列 (option)
response_type URLパラメータとフラグメントのどちらに応答データを含むか (option)
scope カンマで区切ったアクセス許可のリスト (option)

response_type

  • code : デフォルト。応答データはURLパラメータとして返されcodeパラメータが含まれます。
  • token : 応答データはURLフラグメントとして返され、アクセストークンが含まれます。

Response fields

response_typeの指定内容でフィールドが変わる。

Field Description
code response_typeにcodeを指定した場合に受け取るフィールド
token response_typeにtokenを指定した場合に受け取るフィールド

アクセストークンのコードの交換

response_typeにcodeを指定した場合、レスポンスで受け取る認証コードを使ってアクセストークンを取得する。

アクセストークン

EndPoint(GET)
https://graph.facebook.com/v2.8/oauth/access_token

Parameter

Parameter Value
client_id アプリのID
redirect_uri ログインダイアログで指定したリダイレクトURL
client_secret 固有のapp secret
code ログインダイアログのリダイレクトによって受け取る認証コード

Response fields

Field Description
access_token アクセストークン
token_type Fixed bearer?
expires_in アクセストークンの有効時間(秒)

token_typeについて言及しているドキュメントが見当たらなかった。
The OAuth 2.0 Authorization Framework: Bearer Token Usage

アクセストークンの検証

response_typeにtokenを指定した場合、レスポンスで受け取るトークンを検証する。

Graph API Reference - Debug-Token

EndPoint(GET)
https://graph.facebook.com/debug_token

Parameter

Parameter Value
input_token 検査対象のトークン
access_token アプリのアクセストークン

Response fields

JSONフォーマット

Field Description
app_id アプリのID
application アプリ名
expires_at アクセストークンの有効期限が切れる日付
is_valid アクセストークンが有効かどうか
issued_at アクセストークンが発行された日付
metadata アクセストークンのメタデータ
scopes 権限のリスト
user_id ユーザーID

参考

Twitter

Official

Endpoint

リクエストトークンの取得

https://dev.twitter.com/oauth/reference/post/oauth/request_token

EndPoint(POST)
https://api.twitter.com/oauth/request_token

Parameter

Parameter Value
oauth_callback リダイレクトURL
oauth_consumer_key アプリのAPI Key
oauth_nonce リクエストごとにランダムな任意の文字列
oauth_signature_method Fixed HMAC-SHA1
oauth_signature oauth_signature_methodで指定した方式で生成した署名
oauth_timestamp リクエスト作成時のタイムスタンプ値
oauth_version Fixed 1.0

Response fields

Field Description
oauth_token リクエストトークン
oauth_token_secret リクエストトークン・シークレット
oauth_callback_confirmed

ログインダイアログへリダイレクトする

https://dev.twitter.com/oauth/reference/get/oauth/authenticate

EndPoint(GET)
https://api.twitter.com/oauth/authenticate?oauth_token={oauth_token}

Parameter

Parameter Value
oauth_token リクエストトークン
force_login (optional)
screen_name (optional)

リダイレクト先URL

Twitterのログイン画面でアプリを認証した場合に、リクエストトークンの取得時に指定したリダイレクト先URLにoauth_token、oauth_verifierパラメータが付加されてリダイレクトされる。

Field Description
oauth_token 認証済みのリクエストトークン
oauth_verifier リクエストトークンの確認用コード

リクエストトークンをアクセストークンに変換する

https://dev.twitter.com/oauth/reference/post/oauth/access_token

EndPoint(POST)
https://api.twitter.com/oauth/access_token

Parameter

Parameter Value
oauth_token 認証済みのリクエストトークン
oauth_verifier リクエストトークンの確認用コード (optional)
oauth_consumer_key アプリのAPI Key
oauth_nonce リクエストごとにランダムな任意の文字列
oauth_signature_method Fixed HMAC-SHA1
oauth_signature oauth_signature_methodで指定した方式で生成した署名
oauth_timestamp リクエスト作成時のタイムスタンプ値
oauth_version Fixed 1.0

Response fields

Field Description
oauth_token アクセストークン
oauth_token_secret アクセストークン・シークレット
user_id ユーザーID
screen_name ユーザー名

参考

Google

Official

Endpoint

Redirecting to Google's OAuth 2.0 server

EndPoint(GET)
https://accounts.google.com/o/oauth2/v2/auth

Parameter

Parameter Value
response_type Fixed code
client_id Client ID
redirect_uri ログイン後にリダイレクトするURL
scope スペースで区切ったアクセス許可のリスト
state CSRF対策の任意の文字列
access_type online or offline
prompt
login_hint
include_granted_scopes

Response fields

Field Description
code 認証コード

Handling the OAuth 2.0 server response

EndPoint(POST)
https://www.googleapis.com/oauth2/v4/token

Parameter

Parameter Value
code ログイン後のリダイレクトによって受け取る認証コード
client_id Client ID
client_secret Client Secret
redirect_uri ログイン後にリダイレクトするURL
grant_type Fixed authorization_code

Response fields

Field Description
access_token アクセストークン
refresh_token リフレッシュトークン
expires_in アクセストークンの有効時間
token_type Fixed Bearer

Using a refresh token

ログインのフローからは外れますが、アクセストークンの有効期限が失効した場合、リフレッシュトークンを使って、アクセストークンを再発行することができます。

EndPoint(POST)
https://www.googleapis.com/oauth2/v4/token

Parameter

Parameter Value
refresh_token リフレッシュトークン
client_id Client ID
client_secret Client Secret
grant_type Fixed refresh_token

Response fields

Field Description
access_token アクセストークン
expires_in アクセストークンの有効時間
token_type Fixed Bearer

参考

LINE

Official

Endpoint

認証コードの取得

EndPoint
https://access.line.me/dialog/oauth/weblogin

Parameter

Parameter Value
response_type Fixed code
client_id Channel ID
redirect_uri ログイン後にリダイレクトするURL
state CSRF対策の任意の文字列 (optional)

Response fields

Field Description
code ログイン後のリダイレクトによって受け取る認証コード。発行されてから10分間有効
state 認証コード取得時に指定した任意の文字列

アクセストークンの取得

EndPoint(POST)
https://api.line.me/v1/oauth/accessToken

Parameter

Parameter Value
grant_type Fixed authorization_code
client_id Channel ID
client_secret Channel Secret
code ログイン後のリダイレクトによって受け取る認証コード
redirect_uri ログイン後にリダイレクトするURL

Response fields

Field Description
mid ユーザーID
access_token アクセストークン
expires_in アクセストークンの有効期限
refresh_token リフレッシュトークン
scope Fixed null

アクセストークンの再発行

ログインフローからは外れますが、リフレッシュトークンを使用してアクセストークンを再発行することができます。

EndPoint(POST)
https://api.line.me/v1/oauth/accessToken

Parameter

Parameter Value
refreshToken リフレッシュトークン

Response fields

JSONフォーマット

Field Description
mid ユーザーID
accessToken アクセストークン
expire アクセストークンの有効期限
refreshToken リフレッシュトークン

参考

OAuth

OAuth 1.0

参考

OAuth 2.0

参考

Java Library

関連記事

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