0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Supabaseの認証基盤でLINEアカウントを使用する(Custom OIDC Provider)

0
Last updated at Posted at 2026-09-29

0. この記事は何か

タイトル通りですが、Supabaseの認証基盤でLINEアカウントを使用するための設定等についてまとめた記事です。

SupabaseのCustom OIDC Providerの機能を使うことで、LINE LIFF(LINE Front-end Framework)は使わず、一般的なWebアプリとして動作させることができます。

各種の設定画面が複雑で、毎回迷子になってしまうので、メモをかねて記事にします。

なお、技術的な要点については、以下の記事が参考になるかと思います。

1. LINE側の設定

LINE Debelopers Consoleからプロバイダー・チャネルを作成します。

1.1. プロバイダーから「作成」をクリック

image.png

1.2. プロバイダー名を入力して「作成」

image.png

1.3. 画面左の「LINEログイン」をクリック

image.png

1.4. 必要事項を入力して「作成」

サービスを提供する国は「日本」になると思います。
アプリタイプは「ウェブアプリ」にしてください。
他は任意です。
image.png
image.png

1.5. チャネルが登録される

チャネルが登録されるので、「①チャンネルID」と「②チャネルシークレット」を控えておく。
※チャネルシークレットは機密情報なので慎重に取り扱うこと

image.png

image.png

2. Supabase側の設定

Supabase Dashboardから以下の設定を行います。

2.1. Organizationを選択 ⇒ Projectを選択

LINEアカウントでの認証を行うプロジェクトを選択します。

Organizationを選択(以下の例では「Sandbox」。実際に使用するものを選択)
image.png

Projectを選択(以下の例では「test」。実際に使用するものを選択)
image.png

2.2. Authentificationを選択

プロジェクトの画面で、左のサイドバーから「Authentification」を選択
image.png

2.3. Singn In / Providoers を選択

image.png

2.4. Custom Provider ⇒ New Provider を選択

image.png

2.5. Custom Auth Provider を作成

以下を入力して「Create and enable provider」をクリックし、Providerを作成

項目 設定値
Provider Itendifer 「line」
Display Name 任意。「LINE」など
Configuration Method 「Manual Configuration」
Issuer URL 「https://access.line.me」
Authorization URL 「https://access.line.me/oauth2/v2.1/authorize」
Token URL 「https://api.line.me/oauth2/v2.1/token」
Userinfo URL 「https://api.line.me/oauth2/v2.1/userinfo」
JWKS URI 「https://api.line.me/oauth2/v2.1/certs」1
Client ID LINEのチャネルで控えた「①チャンネルID」
Client Secret LINEのチャネルで控えた「②チャネルシークレット」
Scopes 「openid, profile」「5.3. メールアドレスの連携」も参照
Allow users without email 有効
Callback URL 自動で入る。「③コールバックURL」として控えておく

image.png

3. LINE側へcallback URLを反映

再度、LINEのチャネルの設定を開き、以下を設定します。

3.1 callback URL

チャネルの設定から、「LINEログイン設定」を選択し、コールバックURLの「編集」ボタンをクリックする。

image.png

3.1 callback URLの編集

Supabaseの設定で控えた「③コールバックURL」を入力し、「更新」をクリック
image.png

4. 使用法

ここまでの設定により、プロバイダ名「custom:line」を指定することで、LINE アカウントが使用できるようになります。Next.js の例を以下に示します。

import { createClient } from "@supabase/supabase-js";
const supabase = createClient(
  process.env.NEXT_PUBLIC_SUPABASE_URL,
  process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY,
);
async function signInWithLine() {
  const { data, error } = await supabase.auth.signInWithOAuth({
    provider: "custom:line",
    options: {
      redirectTo: `${window.location.origin}/auth/callback`,

      // iOS Safari のログイン失敗を避ける(詳細は 5.1.Safari用のパラメタ 参照)
      queryParams: {
        disable_auto_login: "true",
      },
    },
  });
  if (error || !data.url) {
    // エラー処理
    return;
  }
  window.location.assign(data.url);
}

5. 注意点

5.1. iOS用のパラメタ

「4. 使用法」のサンプルソースに入れている「disable_auto_login=true」についてです。

簡単に言うと、このパラメタを指定しないと、LINEアプリがインストールされているiOS端末(ブラウザがSarafi)で、処理が失敗します。

ちょっと分かりにくいですが、詳細は以下のページを参照してください。

上のページでは、プライベートブラウジングが有効な場合に発生、とありますが、Safariの環境では通常の状態でも発生します。
また、失敗した場合にこのオプションがついているページに誘導してね、という書き方ですが、どうせ失敗するので初めからこのオプションを付けておけばよいと思います。

このオプションを付けると、アプリを介在させずに、ブラウザだけで処理を行うようになり、問題が起きなくなる、という感じです。

5.2. 本番運用を開始するとき

本番運用を開始するときは、LINE Developersからチャネルを「開発中」から「公開済み」ステータスに変更してください。ここを変更しないと、自分自身か、特定のユーザしか認証が通りません。

image.png

image.png

5.3. メールアドレスの連携

この記事の設定だけだと、LINEからメールアドレスを取得することができません。

メールアドレスの取得が必要な場合は、以下のページを参考に、申請を行ったうえで、「2.5 Custom Auth Provider を作成」の「Scopes」に「email」を追加してください。

私自身はやったことが無いのですが、これで取得できるようになるはずです。多分。

  1. 冒頭の参考記事に自動で埋まると書いてあったが、うまくいかなかったため手動で入力。 ↩

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?