SSO / ログイン状態の引き継ぎ

Yappliアプリ内でログイン済みの顧客の状態を、クライアント側の外部サイト(Webビュー等)へ引き継ぐための仕組みです。たとえば、アプリ内から会員限定のECサイトなど外部のWebページへ遷移する際に、「アプリで既にログイン済みの会員である」という状態をそのままWebサイト側に伝えたい、といったケースで利用します。詳細なAPI仕様は 引き継ぎトークンチェック を参照してください。

全体の流れ

sequenceDiagram
    actor User as ユーザー
    participant App as Yappliアプリ
    participant Site as クライアントサイト(外部Webビュー等)
    participant CRM as YappliCRM(本API)

    User->>App: アプリ内コンテンツのリンク/Webビューをタップ
    Note over App: 「遷移先へのパラメータ引き継ぎ」URLが発火<br/>token・id がパラメータに付与される
    App->>Site: POST(application/x-www-form-urlencoded)<br/>token・idをフォームパラメータとして送信
    Site->>CRM: GET /api/ext/check/{token}?id={id}<br/>Authorization: Bearer {access_token}
    CRM-->>Site: 成功時 200 { "status": true }<br/>失敗時 400 { "status": false, "errors": ... }
    Site->>Site: status に応じてログイン画面の表示要否を判断
    Site-->>User: ログイン状態を引き継いだ画面を表示
  1. アプリ内コンテンツのリンク、またはWebビューに「遷移先へのパラメータ引き継ぎ」機能を使ったURLを設定します。設定については当社担当者が実施します。
  2. このURLが発火すると、tokenid がパラメータに付与されます。クライアントサイトへは POST で送信され、フォームリクエスト(Content-Type: application/x-www-form-urlencoded)としてパラメータが渡されます。
  3. 遷移先(クライアントサイト)は、受け取った idtoken を使って、本APIの引き継ぎトークンチェック(GET {{APP_URL}}/api/ext/check/{token}?id={id}。アクセストークンを Authorization: Bearer {access_token} ヘッダーで指定)を呼び出します。
  4. YappliCRMは、ログイン状態を真偽値(status)で返却します。
  5. クライアントサイト側は、この status を使ってその後の処理(ログイン画面の表示要否など)を判断します。

token / id 以外の情報も渡せます

「遷移先へのパラメータ引き継ぎ」では、tokenid に加えて、unique_idlogin_id など、YappliCRMが保持している会員の属性情報も、遷移先URLの追加パラメータとして一緒に渡すことができます。渡したい属性は、URL設定時にパラメータとして指定します。

また、会員の属性情報に限らず、channel=mobile_app のような固定値をパラメータとして渡すことも可能です。遷移先のクライアントサイト側で、どの導線(アプリからのリンク等)からの遷移かを判別したい、といった用途にも利用できます。

ただし、external_ids(外部連携ID)はこの方法では渡せません。外部連携IDが必要な場合は、引き継ぎ後にクライアントサイト側からOpenAPI(顧客詳細取得API等)を呼び出して取得してください。

引き継ぎトークンは、遷移先へ遷移するタイミングで毎回新しいトークンを発行します(ログイン済み会員のアプリ内セッションが前提です)。トークンは64文字のランダムな文字列です。

チェックAPIで一度検証すると無効になるワンタイム方式のため、再利用はできません。検証に成功するとトークンは削除され、同じトークンで再度チェックAPIを呼び出すと Invalid Token エラーになります。期限切れのトークンも、検出された時点で削除されます。

失効したトークンでチェックAPIを呼び出した場合は、HTTP 200 ではなく HTTP 400 で、errors フィールド付きのエラーレスポンスが返却されます。詳細は 引き継ぎトークンチェック を参照してください。

トークンの有効期限は、発行から 24時間 です。

遷移先URLにGETパラメータが含まれる場合の注意

引き継ぎ先のURLに、あらかじめGETパラメータ(クエリパラメータ)が付与されている場合、そのGETパラメータも tokenid 等と合わせて POSTパラメータとして送信されます。遷移先のクライアントサイト側では、この点を踏まえてパラメータの受け取り方を実装してください。

Basic認証が設定されているサイトへ引き継ぐ場合の注意

クライアント側サイトにBasic認証が設定されている場合、「遷移先へのパラメータ引き継ぎ」を使ったURLでは IDとパスワードの部分が消えてしまいます

例:https://id@password@www.example.com?a={unique_id}&b={login_id} のような形式で設定しても、idpassword の部分が欠落します。

このため、引き継ぎ先のクライアントサイトには 基本的にBasic認証を設定しないことを推奨します。アクセス制御が必要な場合は、Basic認証ではなく、接続元IP制限など別の手段をご検討ください。