[Flutter] 애플리케이션에 GiitHub 로그인 기능 추가

개시하다


이번에는 플루터에서 기릿허브 계정으로 로그인하는 기능을 실시했기 때문에 적어야 한다.
트위터와 페이스북 등 다른 공급자의 프로그램도 거의 동일해 앱이 유효하다.

전제 조건

  • Firebase 프로젝트 완료
  • Firebase에 응용 프로그램 등록
  • GiitHub 애플리케이션 생성


    방문Giithub용 개발자 설정.
    [OAuth Apps] 탭을 클릭합니다.
    프로그램을 만들기 위해 필요한 항목(응용 이름, 홈 URL)을 입력합니다.
    콜백 URL은 이때가 적당해도 괜찮다.
    만들면 [Client ID] 및 [Client Secret]이 복사됩니다.

    Firebase 콘솔 구성


    Firebase 콘솔의 Authentication으로 이동하여 시작 또는 Sign-in method 탭을 엽니다.
    공급자 일람에서 [Giithub]을 열고 [활성화]를 선택합니다.
    그런 다음 Giithub 측에서 복제한 [클라이언트 ID] 및 [클라이언트 기밀]을 여기에 입력합니다.
    콜백 URL은 Firebase 및 Giithub 측면에서 일치해야 하기 때문에
    복제[인증 호출 URL]를 Giithub 측면으로 설정합니다.

    필요한 포장 설치


    GiitHub의 로그인 처리 사용github_sign_in 패키지.
    pubspec.yaml
    dependencies:
      flutter:
        sdk: flutter
      firebase_core: ^0.5.3
      firebase_auth: ^0.18.4+1
      github_sign_in: ^0.0.3
    

    Flutter Fire 초기화


    Firebase 포장의 초기화 처리는 필수적이기 때문에main () 함수에 기술하는 것을 잊지 마십시오.
    /lib/main.dart
    ・・・
    void main() async {
      WidgetsFlutterBinding.ensureInitialized();
      await Firebase.initializeApp();
      runApp(MyApp());
    }
    ・・・
    

    로그인을 위한 분류 만들기


    로그인, 로그아웃 등의 계정 인증 처리를 담당하는 Wrapper 레벨을 만듭니다.
    코드 여기 있어요.
    /lib/auth/github_auth.dart
    import 'package:firebase_auth/firebase_auth.dart';
    import 'package:flutter/material.dart';
    import 'package:github_sign_in/github_sign_in.dart';
    
    class GithubAuthUtil {
      static final GitHubSignIn _github = GitHubSignIn(
        clientId: '********',
        clientSecret: '********',
        redirectUrl: 'https://********.firebaseapp.com/__/auth/handler',
      );
    
      /// サインイン中か
      static bool isSignedIn() => FirebaseAuth.instance.currentUser != null;
    
      /// 現在のユーザー情報
      static User getCurrentUser() => FirebaseAuth.instance.currentUser;
    
      /// サインアウト
      static void signOut() => FirebaseAuth.instance.signOut();
    
      /// サインイン
      static Future<User> signIn(BuildContext context) async {
        final UserCredential credential = await signInWithGithub(context);
        return credential.user;
      }
    
      static Future<UserCredential> signInWithGithub(BuildContext context) async {
        final result = await _github.signIn(context);
    
        final AuthCredential githubAuthCredential =
            GithubAuthProvider.credential(result.token);
    
        return await FirebaseAuth.instance
            .signInWithCredential(githubAuthCredential);
      }
    }
    
    
    사용 방법:
    // 現在のユーザー情報を取得
    User _user = GithubAuthUtil.getCurrentUser();
    
    // 現在サインイン済みか
    bool isSignedIn = GithubAuthUtil.isSignedIn();
    
    // サインイン
    GithubAuthUtil.signIn(context)
        .then((user) => setState(() => _user = user));
    
    // サインアウト
    GithubAuthUtil.signOut();
    

    동작 확인


    로그인 시 GiitHub 인증 화면이 표시되며 인증에 성공하면 사용자 이름, UID, Email 등을 취득할 수 있습니다.
    Githubログインページ

    좋은 웹페이지 즐겨찾기