コールバックURL
コールバックURL とは、ソーシャルログイン完了後に結果を返すリダイレクト先となるお客様システムの URL です。ソーシャルログインの成否をコールバックURL のパラメータとして応答します。
ドメイン制限
ソーシャルPLUS のソーシャルログイン機能は個人情報と密接に関係しています。個人情報漏えいのリスク対策のため、「コールバックURL」にはソーシャルログインマネージャーであらかじめ登録したドメインのみ許可されます。
サービス選択後、サイドメニューの[設定]>[サービス設定]にある「サービスURL」または「サービスURL 以外でご利用になるドメイン」にコールバックURL で利用するドメインを登録してください。
「サービスURL」または「サービスURL 以外でご利用になるドメイン」の設定方法について、詳しくはサービスの作成を参照してください。
コールバック時のパラメータ付与
ソー シャルログインの成否
コールバックURL に遷移した際、指定された URL に加えて以下がパラメータとして追加されます。
- ソーシャルログインの成功・失敗のステータス
- ソーシャルログインが成功した場合は「ワンタイムトークン」
- ソーシャルログインが失敗した場合は「エラーメッセージ」
認証が成功したかどうかは「コールバックURL」に追加されるパラメータ status
で判別できます。
status
が authorized
という文字列であればソーシャルログインに成功しています。この場合は、token
というパラメータに「ワンタイムトークン」と呼ばれる文字列が設定されます。
status
が authorized
以外 の場合は、ソーシャルログインに失敗したかキャンセルされた状態です。とくに指定がなければ、成功時と同様に「コールバックURL」にリダイレクト遷移します。この場合、token
パラメータは存在せず、代わって reason
パラメータへ認証に失敗した理由が設定されます。
パラメータの詳細はコールバック時のパラメータをご覧ください。
ソーシャルログインに成功した場合のワンタイムトークン
ソーシャルログインが成功した場合、「コールバックURL」の token
パラメータに半角英数字(ただし、英字については小文字 a~f のみで構成されます)、40 桁で 有効期間 1 時間 のランダム文字列が設定されます。これを「ワンタイムトークン」と呼びます。
ソーシャルログイン成功ごとに発行され、認証情報を取得するキーとなります。
例えば、「コールバックURL」が https://example.com/login/callback
の場合、ソーシャルログインが成功すれば以下のパラメータが付与された状態で遷移します。
https://example.com/login/callback?status=authorized&token=73f9e47254e7acd448b7a8f9a91a9db4028d90f9
「ワンタイムトークン」が得られただけでは、まだ "どのユーザーが" ソーシャルログインを行なったかまではわかりません。「ワンタイムトークン」を元に authenticated_user API を用いて「ソーシャルPLUS ID」または「お客様サービス側ユーザID」を取得することで、ユーザーを特定します。
ソーシャルログインに失敗した場合に別の URL へ遷移させたい
ソーシャルログインに失敗した際のコールバックで別の URL へ遷移させたい場合は、callback
パラメータと同じように callback_if_failed
パラメータへ失敗時に遷移する「コールバックURL」を設定してください。
https://12345abcde.auth.socialplus.jp/example/demo/line/authenticate?callback=https://example.com/login/callback&callback_if_failed=https://example.com/login/callback_failed
コールバックURL に任意のパラメータを含めたい
コールバックURL にはお客様サービスの任意のパラメータを指定しておくことも可能です。 クエリストリング(パラメータ)を含む場合は、callback
パラメータに指定する「コールバックURL」の URL エンコード(パーセントエンコード)が必須です。
URL エンコードが行われない場合、URL 内の ?
&
;
といった記号がソーシャルログインURL 側でのパラメータの区切り文字として認識されるため、期待した「コールバックURL」に遷移しない場合があります。
例えば、「コールバックURL」が https://example.com/login/callback?via=campaign
の場合、URL エンコードを行ったものをソーシャルログインURL に指定すると以下のようになります。
https://12345abcde.auth.socialplus.jp/example/demo/line/authenticate?callback=https%3A%2F%2Fexample.com%2Flogin%2Fcallback%3Fvia%3Dcampaign
コールバックURL にクエリストリング(パラメータ)が存在する場合、ソーシャルPLUS が追加するパラメータ status
token
reason
と同名のパラメータについては、曖昧になることを防ぐために上書きされます。ただし、status=authorized
の場合、reason
は上書きされません。
ワンタイムトークンのパラメータ名を変更したい
組み込み先のシステムで、すでに token
というパラメータ名を使用している場合、ソーシャルログインURL に token_param
パラメータで新しいパラメータ名を指定することで「ワンタイムトークン」のパラメータ名を変更できます。
https://{認証サブドメイン}.auth.socialplus.jp/{アカウントID}/{サービスID}/{ログインプロバイダ名}/authenticate?callback=https://example.com/login/callback&token_param=socp_token
この場合、コールバックURL で「ワンタイムトークン」は以下のように付与されます。
https://example.com/login/callback?status=authorized&socp_token=73f9e47254e7acd448b7a8f9a91a9db4028d90f9
新規登録時のコールバック実装
新規登録処理の場合、ソーシャルPLUS を利用してログインプロバイダから個人情報を取得し、ユーザ登録フォームに取得した情報をあらかじめ設定することでエンドユーザの入力の利便性を向上させるフォームアシスト処理が可能となります。通常、フォームアシスト処理の実装はサーバサイドで行う必要がありますが、ソーシャルPLUS はこの処理をブラウザサイドで行う JavaScript のフォームアシスト機能を提供しています。
ただし、既存のフォームに実装された JavaScript と競合するなどの理由で「フォームアシスト機能」を利用できない場合は、サーバサイドで実装する必要があります。
新規登録時の詳しい実装イメージは実装イメージ(会員登録)をご確認ください。
個人情報の取得
会員登録フォームに埋め込むための個人情報を取得します。コールバック時に得られる「ワンタイムトークン」を元に 認証対象のソーシャルPLUS ID の取得(authenticated_user)API を呼び出します。
この Web API を呼び出すことにより、ソーシャルログインを行なったユーザを特定するための「ソーシャルPLUS ID」と個人情報が取得できます。なお、取得した「ソーシャルPLUS ID」は会員登録処理で必要となりますので、セッションなどの一時データベースに保存しておいてください。
- 認証対象のソーシャルPLUS ID の取得(authenticated_user)API 実行時点で、ワンタイムトークンは無効化されます
- セキュリティ上「ソーシャルPLUS ID」をブラウザ側の Cookie などに保存するのはお止めください
個人情報のフォームへの埋め込み
認証対象のソーシャルPLUS ID の取得(authenticated_user)API によって個人情報が JSON 形式で取得できているはずですので、これをパースし、新規登録フォームをレンダリングする際にフォームの value
値などに設定します。
お客様サービス側ユーザID と ソーシャルPLUS ID の紐付け
新規登録フォームから会員登録処理に遷移して会員登録した場合、登録完了時に「お客様サービス側ユーザID」と「ソーシャルPLUS ID」を紐付ける必要があります。
この処理にはお客様サービス側ユーザID の紐付け(map)APIを利用します。
ログイン時のコールバック実装
ログイン処理の場合、「ワンタイムトークン」を用いてソーシャルPLUS Web API にどのユーザがログインしたかを問い合わせ、該当するユーザが存在すればパスワードの照合などを省略してログインさせる処理をお客様サービス側で実装する必要があります。
ソーシャルログインを行なったユーザの特定は、新規登録のときと同じく認証対象のソーシャルPLUS ID の取得(authenticated_user)API で行いますが、新規登録時に お客様サービス側ユーザID の紐付け(map)API で「お客様サービス側ユーザID」を「ソーシャルPLUS ID」に紐付け登録している場合は、「ソーシャルPLUS ID」とあわせて「お客様サービス側ユーザID」が返されます。
ログイン時の詳しい実装イメージは実装イメージ(ログイン)をご確認ください。