1
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?

【備忘録】SupabaseAuthのGitHub認証を使ってGitHubのアクセストークンを取得する

Posted at

はじめに

supabaseAuthGitHub認証 を実装して
GitHub REST API で使える アクセストークン取得 する備忘録です。

下準備 - Supabase側

red1.png
SupabaseDashboard にある New projectクリック します。

red2.png
適当な NameDatabase Password を入力して Create new projectクリック します。

red3.png

サイドバーAuthenticationクリック します。

red4.png

Providersクリック します。

red5.png

GitHubクリック して Callback URLコピー します。

下準備 - GitHub側

GitHub OAuth application を登録します。

登録の 詳細 は以下の通りです。

red6.png

Authorization callback URL下準備 - GitHub側コピー したものを使います。

red7.png

Supabase 側に戻って GitHub 側で発行された Client IDClient secrets を設定します。

Next.js で GitHub認証 を実装する

npm install @supabase/supabase-js

SupabaseJSクライアントインストール します。

red8.png

Home にある Project URLAPI Keyコピー しておきます。

app/page.tsx
"use client";

import { createClient } from "@supabase/supabase-js";

const projectUrl = "https://ofloliwizljkltliktus.supabase.co";
const apikey = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Im9mbG9saXdpemxqa2x0bGlrdHVzIiwicm9sZSI6ImFub24iLCJpYXQiOjE3MTIyMzg1MDYsImV4cCI6MjAyNzgxNDUwNn0.V30UwX79wkyfWYaEF6hkdOneh38czL6c5n5UXBm9IlM";
const supabase = createClient(projectUrl, apikey);

supabase.auth.onAuthStateChange((event, session) => {
  if (session && session.provider_token) {
    window.localStorage.setItem('oauth_provider_token', session.provider_token)
  }

  if (session && session.provider_refresh_token) {
    window.localStorage.setItem('oauth_provider_refresh_token', session.provider_refresh_token)
  }

  if (event === 'SIGNED_OUT') {
    window.localStorage.removeItem('oauth_provider_token')
    window.localStorage.removeItem('oauth_provider_refresh_token')
  }
})

export default function Home() {
  const signInGitHub = async () => {
    const { data, error } = await supabase.auth.signInWithOAuth({
      provider: 'github'
    })
  }

  return (
    <button onClick={signInGitHub}>ユーザ作成ボタン</button>
  );
}

大事 なのは
projectUrlapiKey
supabase.auth.onAuthStateChange
signInGitHub
3つ です。

projectUrlapiKeyHomeコピー したものを使います。

supabase.auth.onAuthStateChange認証イベント発生 した時に 発火 します。

今回は GitHub REST API で使う アクセストークンローカルストレージ保存 しています。

signInGitHubGitHub認証 を使った ユーザ登録 を行っています。

red9.png

認証 を終えた後にブラウザの ローカルストレージ を見ると oauth_provider_token保存
されており、これが GitHub REST API で使う アクセストークン になっています。

1
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
1
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?