User Account認証 (OAuth)

    User Account認証とは、LINE WORKSユーザーでログインを行い、Access Tokenを発行してAPIを利用する方法です。

    Developers Consoleに登録したアプリでUser Account認証 (OAuth)を使用したAccess Token発行フローは以下の通りです。

    1. ユーザーは、アプリの利用を開始する
    2. アプリは、LINE WORKSにユーザー認可を要求する(Client ID, Redirect URLを送信)
    3. LINE WORKSは、ユーザーの資格情報(Credentials)を確認し、認証していない場合はログイン画面を表示する
    4. ユーザーは、ログイン画面でIDとパスワードを入力してログインする
    5. LINE WORKSは、認証成功時にAuthorization Code(認可コード)を発行し、指定されたRedirect URLにリダイレクトする
    6. アプリは、Authorization CodeをもとにAccess Tokenを発行する
    7. アプリは、Access Tokenの有効期限が過ぎた場合、Refresh Tokenをもとに再発行する

    Authorization Code / Access Token / Refresh Token の制限について

    • Authorization Code

      • 使用可能回数:1
      • 有効期限:10
    • Access Token

      • 有効期限: 24時間
    • Refresh Token

      • 有効期限: 90

    事前準備

    Developers Consoleにアプリを登録し、以下のアプリ情報を準備します。

    • Client ID
    • Client Secret
    • Redirect URL

    Authorization Codeの発行

    準備したアプリ情報をもとに、Authorization Codeの発行が可能です。

    Request URL

    GET https://auth.worksmobile.com/oauth2/v2.0/authorize?client_id={Client_ID}&redirect_uri={Redirect_URL}&scope={Scope}&response_type=code&state={Free_Text}
    

    Request Query Parameters

    以下の項目をURLエンコードして送信します。

    パラメータ タイプ 必須 説明
    client_id String Y アプリのClient ID
    redirect_uri String Y アプリのRedirect URL。Authorization Code発行後のリダイレクト先。
    scope String Y 利用する scope 。複数の scope を設定する場合は「,」で区切る
    response_type String Y code (固定) 
    state String Y CSRFを防止するために用いる任意の値
    domain String N ドメイン名。(スタンダードプランの場合は、グループ名)
    SSO機能を利用する場合は必須。

    Request Example

    GET https://auth.worksmobile.com/oauth2/v2.0/authorize?client_id=ZbsOq6zjt0IhtZZnrc&redirect_uri=https%3A%2F%2Fexample.com%2Fredirect-url&scope=bot&response_type=code&state=aBcDeF
    

    ログイン画面で認証に失敗した場合、エラー画面が表示されます。
    ログイン画面で認証に成功した場合、Redirect URL(redirect_uri)にリダイレクトされます。

    Redirect URL

    GET {Redirect_URL}?code={Authorization_Code}&state={Free_Text}
    

    Redirect Query Parameters

    パラメータ タイプ 説明
    code String Authorization Code (使用可能回数:1回 / 有効期限:10分)
    state String Authorization Codeの要求時に送信したstate値

    Redirect Example

    GET https://example.com/redirect-url?code=GgWvoasicmC8MMaUzuxx&state=aBcDeF
    

    Access Tokenの発行

    発行されたAuthorization CodeでAccess Tokenを発行することが可能です。

    Request URL

    POST https://auth.worksmobile.com/oauth2/v2.0/token
    

    Request Headers

    Content-Type: application/x-www-form-urlencoded

    Request Form Parameters

    以下の項目を URL エンコードして渡します。

    パラメータ タイプ 必須 説明
    code String Y Authorization Code
    grant_type String Y authorization_code (固定)
    client_id String Y アプリのClient ID
    client_secret String Y アプリのClient Secret
    domain String N ドメイン名。(スタンダードプランの場合は、グループ名)
    SSO機能を利用する場合は必須。

    Request Example

    curl --location --request POST 'https://auth.worksmobile.com/oauth2/v2.0/token' \
    --header 'Content-Type: application/x-www-form-urlencoded' \
    --data-urlencode 'code=GgWvoasicmC8MMaUzuxx' \
    --data-urlencode 'grant_type=authorization_code' \
    --data-urlencode 'client_id=ZbsOq6zjt0IhtZZnrc' \
    --data-urlencode 'client_secret=oRm3M_nBg6'
    

    Response Body (JSON)

    パラメータ タイプ 説明
    access_token String Access Token (有効期間:24時間)
    refresh_token String Refresh Token (有効期間:90日)
    scope String Access Token で利用できる scope
    expires_in String Access Tokenの有効期間
    token_type String Bearer (固定)

    Response Example

    {
        "access_token": "jp1AAAAwQSFbOgcXEy7kRGlljKS5/8UwpRh454bljHQajmS7TK069czqA0JcuCcbfDNWRqouQVL/cw64btBW08PQALp10jr3cqgQrA9sdytxKo0+xVT90b3yHs+/6/PM//qEjubrjyYMO+Nt3lPZrFOzzJiRiAQqU0lor0zWk+ZNxMm6D40nB8jD74voYpLTKX+HjSh63Xihmq1ckyN72OjkmmRuZ5+9Qp5GPvWp8jnL8n2ewFI/3D8hg9KFicOUh5V6aKqaxDj+zYuA9xAPOTgJMRpNZA=",
        "refresh_token": "AAAAUrG721oexirJYyMXOdFMhVpRIDLP9g8gIIGf5xklkE+5FTIITjwlUGCyfJ5F3u4fWi4bIBheJ/2xrQ40M9VTd//g4aEqH1vBwjS6kKpGnUUen2oJqyNcel2fOz8E3nFKAQ==",
        "scope": "bot",
        "expires_in": "86400",
        "token_type": "Bearer"
    }
    

    Access Tokenの再発行

    Access Tokenの有効期限が満了した場合、Refresh Tokenを使用してAccess Tokenを再発行することが可能です。

    Request URL

    POST https://auth.worksmobile.com/oauth2/v2.0/token
    

    Request Headers

    Content-Type: application/x-www-form-urlencoded

    Request Form Parameters

    以下の項目をURLエンコードして渡します。

    パラメータ タイプ 必須 説明
    refresh_token String Y Refresh Token
    grant_type String Y refresh_token (固定)
    client_id String Y アプリのClient ID
    client_secret String Y アプリのClient Secret

    Request Example

    curl --location --request POST https://auth.worksmobile.com/oauth2/v2.0/token \
    --header 'Content-Type: application/x-www-form-urlencoded' \
    --data-urlencode 'refresh_token=AAAAUrG721oexirJYyMXOdFMhVpRIDLP9g8gIIGf5xklkE+5FTIITjwlUGCyfJ5F3u4fWi4bIBheJ/2xrQ40M9VTd//g4aEqH1vBwjS6kKpGnUUen2oJqyNcel2fOz8E3nFKAQ==' \
    --data-urlencode 'grant_type=refresh_token' \
    --data-urlencode 'client_id=ZbsOq6zjt0IhtZZnrc' \
    --data-urlencode 'client_secret=oRm3M_nBg6'
    

    Response Body (JSON)

    パラメータ タイプ 説明
    access_token String Access Token
    scope String Access Token で利用できる scope
    expires_in String Access Tokenの有効期間
    token_type String Bearer (固定)

    Response Example

    {
        "access_token": "jp1BBBBwQSFbOgcXEy7kRGlljKS5/8UwpRh454bljHQajmS7TK069czqA0JcuCcbfDNWRqouQVL/cw64btBW08PQALp10jr3cqgQrA9sdytxKo0+xVT90b3yHs+/6/PM//qEjubrjyYMO+Nt3lPZrFOzzJiRiAQqU0lor0zWk+ZNxMm6D40nB8jD74voYpLTKX+HjSh63Xihmq1ckyN72OjkmmRuZ5+9Qp5GPvWp8jnL8n2ewFI/3D8hg9KFicOUh5V6aKqaxDj+zYuA9xAPOTgJMRpNZA=",
        "scope": "bot",
        "expires_in": "86400",
        "token_type": "Bearer"
    }