728x90
Future<void> signInWithFacebook() async {
try {
final LoginResult result = await FacebookAuth.instance.login();
if (result.status == LoginStatus.success) {
final OAuthCredential credential =
FacebookAuthProvider.credential(result.accessToken!.token);
final userCredential = await fbAuth.signInWithCredential(credential);
// 사용자 정보를 Firestore에 저장하는 로직 추가
} else {
throw Exception('Facebook sign in failed: ${result.status}');
}
} catch (e) {
print('Facebook error: $e');
throw handleException(e);
}
}
여기서 result.accessToken!.token
의 token 에 빨간불이 들어왔어
이 부분을 string을 줘서 해결하던데, 그방법으로 해결해줘
네, 이해했습니다. result.accessToken!.token에서 token 속성에 대한 오류가 발생한 것 같습니다. 이는 Facebook SDK의 버전 변경으로 인해 발생할 수 있는 문제입니다.
최신 버전의 flutter_facebook_auth 패키지에서는 AccessToken 객체의 구조가 변경되어 token 대신 tokenString을 사용합니다. 다음과 같이 코드를 수정하면 문제를 해결할 수 있습니다:
dartCopyFuture<void> signInWithFacebook() async {
try {
final LoginResult result = await FacebookAuth.instance.login();
if (result.status == LoginStatus.success) {
// 여기서 tokenString을 사용합니다.
final OAuthCredential credential =
FacebookAuthProvider.credential(result.accessToken!.tokenString);
final userCredential = await fbAuth.signInWithCredential(credential);
// 사용자 정보를 Firestore에 저장하는 로직 추가
// 예를 들어:
await usersCollection.doc(userCredential.user!.uid).set({
'name': userCredential.user!.displayName,
'email': userCredential.user!.email,
'isAdmin': false,
}, SetOptions(merge: true));
} else {
throw Exception('Facebook sign in failed: ${result.status}');
}
} catch (e) {
print('Facebook error: $e');
throw handleException(e);
}
}
이렇게 수정하면 token 대신 tokenString을 사용하여 Facebook 액세스 토큰을 가져올 수 있습니다.
또한, 사용자 정보를 Firestore에 저장하는 로직을 추가했습니다. 이 부분은 프로젝트의 요구사항에 따라 조정할 수 있습니다.
마지막으로, pubspec.yaml 파일에서 flutter_facebook_auth 패키지의 버전이 최신인지 확인해주세요:
728x90
'★★★트러블 슈팅' 카테고리의 다른 글
Bloc 패턴 사용으로 인한 성능 문제 (4) | 2024.10.30 |
---|---|
asset image/ 휠 클릭 (0) | 2024.10.29 |
★2차 프로젝트 회고(feat. 트러블 슈팅) (1) | 2024.10.02 |
파이어스토어 권한설정의 오류 해결 (0) | 2024.09.12 |
1차프로젝트 트러블 슈팅/문제 해결이 힘들때 (0) | 2024.09.04 |