HTML 파일 하나로 Firebase Github 인증

10149 단어 GitHubFirebase

HTML


index.html
<!DOCTYPE html>
<body>
  <p id="message"><!-- hello, *** --></p>
  <button id="signin">signin</button>
  <button id="signout">signout</button>

  <!-- 依存 -->
  <script src="https://www.gstatic.com/firebasejs/4.6.0/firebase-app.js"></script>
  <script src="https://www.gstatic.com/firebasejs/4.6.0/firebase-auth.js"></script>

  <!-- メイン処理 -->
  <script>
document.addEventListener('DOMContentLoaded', () => {
  const config = {
    apiKey: '<api-key>',
    authDomain: '<project-name>.firebaseapp.com'
  };
  firebase.initializeApp(config);

  const provider = new firebase.auth.GithubAuthProvider();

  /**
   * `firebase.auth().signInWithRedirect`から戻ってきた時に
   * 問題なければ`then`で`user`や`accessToken`が渡ってくる
   */
  (async () => {
    try {
      const {user, credential} = await firebase.auth().getRedirectResult();
      /* 何か... */
    } catch (err) {
      /* エラー時の処理 */
    }
  })();

  /**
   * ログインユーザーが変わったら発火
   */
  firebase.auth().onAuthStateChanged(user => {
    if (user) {
      document.getElementById('message').innerHTML = `hello, ${user.displayName}`;

      /**
       * ログイン中なのでログアウトできるように
       */
      document.getElementById('signout').addEventListener('click', async () => {
        try {
          await firebase.auth().signOut();
        } catch (_) {
          /* エラー時の処理 */
        }
      });
    } else {
      document.getElementById('message').innerText = '';

      /**
       * ログインまだなので、クリックでログインできるように
       */
      document.getElementById('signin').addEventListener('click', () => {
        firebase.auth().signInWithRedirect(provider);
      });
    }
  });
});
  </script>
</body>

Gif



보충하다


의존하다


인증만 사용하기 때문에 파일 크기를 줄이기 위해 단독으로 읽지만 Firebase가 제공하는 모든 기능을 사용하고 싶다면
<script src="https://www.gstatic.com/firebasejs/*.*.*/firebase.js"></script>
그럴 수도 있어.이것은
<script src="https://www.gstatic.com/firebasejs/*.*.*/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/*.*.*/firebase-auth.js"></script>
<script src="https://www.gstatic.com/firebasejs/*.*.*/firebase-database.js"></script>
<script src="https://www.gstatic.com/firebasejs/*.*.*/firebase-messaging.js"></script>
에서 설명한 대로 해당 매개변수의 값을 수정합니다.

주처리


Firebase 기능을 사용하려면 먼저 firebase.initializeApp(config) 를 사용해야 합니다.(그렇지 않으면firebase.auth() 같은 오류가 발생합니다.

API 키 확인


톱니바퀴에서 항목 설정에 게재됩니다.

"OAuth Apps" 를 Github으로 만들겠습니다.

new firebase.auth.GithubAuthProvider()가 필요합니다.


등록 후 나타나는 Client ID 및 Client Secret 를 Github의 Auth 설정 양식으로 복사합니다.

콜백을 Github로 복사하십시오.

로그인 여부 확인

firebase.auth().onAuthStateChanged(...) 그러면 사용자가 로그인하면 그 사용자 정보가 전송되고 없으면 null 전송되기 때문에 이것으로 판단할 수 있다.

좋은 웹페이지 즐겨찾기