반응형
목표는 로그인 후 테이블에 유저를 특정 할 수 있는 uuid 값과 구글 이메일, 닉네임을 저장 하는 것이었습니다.
Supabase에는 기본적인 보안 정책이 있습니다. 로그인 된 유저만 해당 DB 테이블을 CRUD를 할 수 있습니다.
그것을 Row-Level Security 라고 부르고 줄여서 RLS 입니다.
RLS 링크
https://supabase.com/docs/learn/auth-deep-dive/auth-row-level-security
테이블을 RLS 설정을 키면 정책을 입력을 해야 합니다.
Supabase는 기본적인 정책을 만들어 두었습니다.
저는 유저의 uid 값을 RLS 정책 기본 값으로 설정했습니다. 이후에는 이 uid 값이 해당 테이블의 uid값과 일치해야
글을 입력, 수정,삭제 할 수 있습니다.
플러터에서는 다음과 같은 코드를 사용하였습니다.
Future<AuthResponse> _googleSignIn2() async {
// 구글 클라우드 웹 클라이언트 아이디
const webClientId =
'';
//구글 클라우드 IOS 클라이언트 아이디
const iosClientId =
'';
// 구글 로그인 요청
final GoogleSignIn googleSignIn = GoogleSignIn(
clientId: iosClientId,
serverClientId: webClientId,
);
// 로그인 한 유저의 정보를 구글 인증 서버에 토큰 요청, 받은 토큰으로 supabae 서버에 로그인 시작
final googleUser = await googleSignIn.signIn();
final googleAuth = await googleUser!.authentication;
final accessToken = googleAuth.accessToken;
final idToken = googleAuth.idToken;
// Google 로그인을 사용하여 Supabase에 로그인 시도
final authResponse = await supabase.auth.signInWithIdToken(
provider: Provider.google,
idToken: idToken!,
accessToken: accessToken,
);
// Supabase에서 자동으로 생성된 uid 가져오기
final uid = authResponse.user?.id;
//로그인 후 todo 테이블에 supabaes에서 생성된 유저의 uid값과 구글 로그인을 통해 얻은 닉네임, 이메일을 저장
await supabase.from('todo').insert([
{
'Uid': uid,
'Name': googleUser.displayName ?? '',
'Email': googleUser.email,
}
]);
return authResponse;
}
아래와 같이 잘 입력이 되었습니다~!!
728x90
반응형
'Flutter-플러터 > 플러터 공부' 카테고리의 다른 글
Getx Getview를 활용한 애니메이션 (0) | 2023.11.17 |
---|---|
Flutter X supabase X 공공데이터 북한 인물 조회 (0) | 2023.11.17 |
Flutter- supabaase Google 소셜 로그인 구현 (0) | 2023.11.15 |
Flutter -Auth 코드를 짤 때 Session을 변수명으로 쓰는 이유 (1) | 2023.11.13 |
Flutter 구글 스프레드 시트 연동 3 - 데이터 삭제 (0) | 2023.11.02 |