การตรวจสอบสิทธิ์ทางสังคมเป็นขั้นตอนการตรวจสอบสิทธิ์แบบหลายขั้นตอน ซึ่งช่วยให้คุณสามารถลงชื่อเข้าใช้บัญชีหรือเชื่อมโยงกับบัญชีที่มีอยู่ได้
ทั้งแพลตฟอร์มดั้งเดิมและเว็บรองรับการสร้างข้อมูลรับรอง จากนั้นจึงส่งผ่านไปยัง signInWithCredential
หรือ linkWithCredential
หรือบนแพลตฟอร์มเว็บ คุณสามารถทริกเกอร์กระบวนการตรวจสอบสิทธิ์ผ่านป๊อปอัปหรือเปลี่ยนเส้นทางได้
การกำหนดค่าส่วนใหญ่ได้รับการตั้งค่าแล้วเมื่อใช้ Google Sign-In กับ Firebase อย่างไรก็ตาม คุณต้องตรวจสอบให้แน่ใจว่าคีย์ SHA1 ของเครื่องได้รับการกำหนดค่าเพื่อใช้กับ Android คุณสามารถดูวิธีสร้างคีย์ได้ใน เอกสารรับรองความถูกต้อง
ตรวจสอบว่าได้เปิดใช้งานผู้ให้บริการลงชื่อเข้าใช้ "Google" บน คอนโซล Firebase
หากผู้ใช้ของคุณลงชื่อเข้าใช้ Google หลังจากลงทะเบียนบัญชีด้วยตนเองแล้ว ผู้ให้บริการตรวจสอบสิทธิ์จะเปลี่ยนเป็น Google โดยอัตโนมัติ เนื่องจากแนวคิด Firebase Authentications ของผู้ให้บริการที่เชื่อถือได้ คุณสามารถหาข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ได้ ที่นี่
iOS+ และ Android
บนแพลตฟอร์มดั้งเดิม ไลบรารีของบุคคลที่สามจะต้องทริกเกอร์โฟลว์การตรวจสอบสิทธิ์
ติดตั้งปลั๊กอิน google_sign_in
อย่างเป็นทางการ
เมื่อติดตั้งแล้ว ให้ทริกเกอร์ขั้นตอนการลงชื่อเข้าใช้และสร้างข้อมูลรับรองใหม่:
import 'package:google_sign_in/google_sign_in.dart';
Future<UserCredential> signInWithGoogle() async {
// Trigger the authentication flow
final GoogleSignInAccount? googleUser = await GoogleSignIn().signIn();
// Obtain the auth details from the request
final GoogleSignInAuthentication? googleAuth = await googleUser?.authentication;
// Create a new credential
final credential = GoogleAuthProvider.credential(
accessToken: googleAuth?.accessToken,
idToken: googleAuth?.idToken,
);
// Once signed in, return the UserCredential
return await FirebaseAuth.instance.signInWithCredential(credential);
}
เว็บ
บนเว็บ Firebase SDK ให้การสนับสนุนสำหรับการจัดการขั้นตอนการตรวจสอบสิทธิ์โดยอัตโนมัติโดยใช้โปรเจ็กต์ Firebase ตัวอย่างเช่น:
สร้างผู้ให้บริการตรวจสอบ สิทธิ์ของ Google โดยระบุขอบเขต การอนุญาตเพิ่มเติมที่คุณต้องการรับจากผู้ใช้:
GoogleAuthProvider googleProvider = GoogleAuthProvider();
googleProvider.addScope('https://www.googleapis.com/auth/contacts.readonly');
googleProvider.setCustomParameters({
'login_hint': 'user@example.com'
});
ระบุข้อมูลประจำตัวให้กับเมธอด signInWithPopup
การดำเนินการนี้จะทำให้หน้าต่างใหม่ปรากฏขึ้นพร้อมท์ให้ผู้ใช้ลงชื่อเข้าใช้โครงการของคุณ หรือคุณสามารถใช้ signInWithRedirect
เพื่อให้กระบวนการตรวจสอบสิทธิ์อยู่ในหน้าต่างเดียวกัน
Future<UserCredential> signInWithGoogle() async {
// Create a new provider
GoogleAuthProvider googleProvider = GoogleAuthProvider();
googleProvider.addScope('https://www.googleapis.com/auth/contacts.readonly');
googleProvider.setCustomParameters({
'login_hint': 'user@example.com'
});
// Once signed in, return the UserCredential
return await FirebaseAuth.instance.signInWithPopup(googleProvider);
// Or use signInWithRedirect
// return await FirebaseAuth.instance.signInWithRedirect(googleProvider);
}
Google Play Games
คุณตรวจสอบสิทธิ์ผู้ใช้ในเกม Android ได้โดยใช้การลงชื่อเข้าใช้ Play Games
Android
ทำตามคำแนะนำสำหรับการตั้งค่า Google บน Android จากนั้นกำหนดค่า บริการ Play Games ด้วยข้อมูลแอป Firebase
ข้อมูลต่อไปนี้จะทริกเกอร์ขั้นตอนการลงชื่อเข้าใช้ สร้างข้อมูลรับรองใหม่และลงชื่อเข้าใช้ผู้ใช้:
final googleUser = await GoogleSignIn(
signInOption: SignInOption.games,
).signIn();
final googleAuth = await googleUser?.authentication;
if (googleAuth != null) {
// Create a new credential
final credential = GoogleAuthProvider.credential(
accessToken: googleAuth.accessToken,
idToken: googleAuth.idToken,
);
// Once signed in, return the UserCredential
await _auth.signInWithCredential(credential);
}
ก่อนเริ่มต้น ให้ตั้งค่า แอพ Facebook Developer ของคุณและทำตามขั้นตอนการตั้งค่าเพื่อเปิดใช้งานการเข้าสู่ระบบ Facebook
ตรวจสอบว่าผู้ให้บริการลงชื่อเข้าใช้ "Facebook" เปิดใช้งานอยู่บน คอนโซล Firebase ด้วย Facebook App ID และชุด Secret
iOS+ และ Android
บนแพลตฟอร์มดั้งเดิม ไลบรารีของบุคคลที่สามจะต้องติดตั้งทั้ง Facebook SDK และทริกเกอร์โฟลว์การตรวจสอบสิทธิ์
ติดตั้งปลั๊กอิน flutter_facebook_auth
คุณจะต้องทำตามขั้นตอนในเอกสารประกอบปลั๊กอินเพื่อให้แน่ใจว่าทั้ง Android และ iOS Facebook SDK ได้รับการเตรียมใช้งานอย่างถูกต้อง เมื่อเสร็จแล้ว ให้ทริกเกอร์ขั้นตอนการลงชื่อเข้าใช้ สร้างข้อมูลรับรอง Facebook และลงชื่อเข้าใช้ให้ผู้ใช้:
import 'package:flutter_facebook_auth/flutter_facebook_auth.dart';
Future<UserCredential> signInWithFacebook() async {
// Trigger the sign-in flow
final LoginResult loginResult = await FacebookAuth.instance.login();
// Create a credential from the access token
final OAuthCredential facebookAuthCredential = FacebookAuthProvider.credential(loginResult.accessToken.token);
// Once signed in, return the UserCredential
return FirebaseAuth.instance.signInWithCredential(facebookAuthCredential);
}
เว็บ
บนเว็บ Firebase SDK ให้การสนับสนุนสำหรับการจัดการขั้นตอนการตรวจสอบสิทธิ์โดยอัตโนมัติโดยใช้รายละเอียดแอปพลิเคชัน Facebook ที่ให้ไว้ในคอนโซล Firebase ตัวอย่างเช่น:
สร้างผู้ให้บริการ Facebook โดยระบุ ขอบเขตการอนุญาต เพิ่มเติมที่คุณต้องการรับจากผู้ใช้
ตรวจสอบให้แน่ใจว่า OAuth เปลี่ยนเส้นทาง URI จากคอนโซล Firebase ถูกเพิ่มเป็น OAuth Redirect URI ที่ถูกต้องในแอป Facebook ของคุณ
FacebookAuthProvider facebookProvider = FacebookAuthProvider();
facebookProvider.addScope('email');
facebookProvider.setCustomParameters({
'display': 'popup',
});
ระบุข้อมูลประจำตัวให้กับเมธอด signInWithPopup
การดำเนินการนี้จะทำให้หน้าต่างใหม่ปรากฏขึ้นเพื่อแจ้งให้ผู้ใช้ลงชื่อเข้าใช้แอปพลิเคชัน Facebook ของคุณ:
Future<UserCredential> signInWithFacebook() async {
// Create a new provider
FacebookAuthProvider facebookProvider = FacebookAuthProvider();
facebookProvider.addScope('email');
facebookProvider.setCustomParameters({
'display': 'popup',
});
// Once signed in, return the UserCredential
return await FirebaseAuth.instance.signInWithPopup(facebookProvider);
// Or use signInWithRedirect
// return await FirebaseAuth.instance.signInWithRedirect(facebookProvider);
}
แอปเปิล
iOS+
ก่อนที่คุณจะเริ่มต้น ให้ กำหนดค่าการลงชื่อเข้าใช้ด้วย Apple และ เปิดใช้งาน Apple เป็นผู้ให้บริการการลงชื่อเข้าใช้
ขั้นต่อไป ตรวจสอบให้แน่ใจว่าแอป Runner
ของคุณมีความสามารถ "ลงชื่อเข้าใช้ด้วย Apple"
Android
ก่อนที่คุณจะเริ่มต้น ให้ กำหนดค่าการลงชื่อเข้าใช้ด้วย Apple และ เปิดใช้งาน Apple เป็นผู้ให้บริการการลงชื่อเข้าใช้
เว็บ
ก่อนที่คุณจะเริ่มต้น ให้ กำหนดค่าการลงชื่อเข้าใช้ด้วย Apple และ เปิดใช้งาน Apple เป็นผู้ให้บริการการลงชื่อเข้าใช้
import 'package:firebase_auth/firebase_auth.dart';
Future<UserCredential> signInWithApple() async {
final appleProvider = AppleAuthProvider();
if (kIsWeb) {
await FirebaseAuth.instance.signInWithPopup(appleProvider);
} else {
await FirebaseAuth.instance.signInWithProvider(appleProvider);
}
}
Microsoft
iOS+
ก่อนที่คุณจะเริ่ม กำหนดค่าการเข้าสู่ระบบ Microsoft สำหรับ iOS และเพิ่ม รูปแบบ URL ที่กำหนดเองให้กับ Runner ของคุณ (ขั้นตอนที่ 1)
Android
ก่อนที่คุณจะเริ่ม กำหนดค่า Microsoft Login สำหรับ Android
อย่าลืมเพิ่มลายนิ้วมือ SHA-1 ของแอป
เว็บ
ก่อนที่คุณจะเริ่ม กำหนดค่าการเข้าสู่ระบบ Microsoft สำหรับเว็บ
import 'package:firebase_auth/firebase_auth.dart';
Future<UserCredential> signInWithMicrosoft() async {
final microsoftProvider = MicrosoftAuthProvider();
if (kIsWeb) {
await FirebaseAuth.instance.signInWithPopup(microsoftProvider);
} else {
await FirebaseAuth.instance.signInWithProvider(microsoftProvider);
}
}
ทวิตเตอร์
ตรวจสอบว่าเปิดใช้งานผู้ให้บริการลงชื่อเข้าใช้ "Twitter" บน คอนโซล Firebase ด้วยชุดคีย์ API และชุดข้อมูลลับของ API ตรวจสอบให้แน่ใจว่า Firebase OAuth เปลี่ยนเส้นทาง URI ของคุณ (เช่น my-app-12345.firebaseapp.com/__/auth/handler) ถูกตั้งค่าเป็น URL การเรียกกลับของ Authorization ในหน้าการตั้งค่าของแอปบนการกำหนดค่าของ แอป Twitter
คุณอาจต้องขอ การเข้าถึง API ที่ยกระดับ ทั้งนี้ขึ้นอยู่กับแอปของคุณ
iOS+
คุณต้องกำหนดค่าโครงร่าง URL ที่กำหนดเองตามที่ อธิบายไว้ในขั้นตอนที่ 1 คู่มือ iOS
Android
หากคุณยังไม่ได้ระบุลายนิ้วมือ SHA-1 ของแอป ให้ดำเนินการจาก หน้าการตั้งค่า ของคอนโซล Firebase อ้างถึงการ รับรองความถูกต้องไคลเอ็นต์ของคุณ สำหรับรายละเอียดเกี่ยวกับวิธีรับลายนิ้วมือ SHA-1 ของแอป
เว็บ
ทำงานออกจากกล่อง
import 'package:firebase_auth/firebase_auth.dart';
Future<void> _signInWithTwitter() async {
TwitterAuthProvider twitterProvider = TwitterAuthProvider();
if (kIsWeb) {
await FirebaseAuth.instance.signInWithPopup(twitterProvider);
} else {
await FirebaseAuth.instance.signInWithProvider(twitterProvider);
}
}
GitHub
ตรวจสอบให้แน่ใจว่าคุณได้ตั้งค่าแอป OAuth จาก การตั้งค่านักพัฒนา GitHub และเปิดใช้งานผู้ให้บริการการลงชื่อเข้าใช้ "GitHub" บน คอนโซล Firebase ที่มีการตั้งค่ารหัสไคลเอ็นต์และข้อมูลลับแล้ว โดยมีการตั้งค่า URL การโทรกลับในแอป GitHub
iOS+ และ Android
สำหรับแพลตฟอร์มดั้งเดิม คุณต้องเพิ่ม google-services.json
และ GoogleService-Info.plist
สำหรับ iOS ให้เพิ่มรูปแบบ URL ที่กำหนดเองตามที่ อธิบายไว้ในขั้นตอนคู่มือ iOS 1
Future<UserCredential> signInWithGitHub() async {
// Create a new provider
GithubAuthProvider githubProvider = GithubAuthProvider();
return await FirebaseAuth.instance.signInWithProvider(githubProvider);
}
เว็บ
บนเว็บ GitHub SDK ให้การสนับสนุนสำหรับการจัดการขั้นตอนการตรวจสอบสิทธิ์โดยอัตโนมัติโดยใช้รายละเอียดแอปพลิเคชัน GitHub ที่ให้ไว้ในคอนโซล Firebase ตรวจสอบให้แน่ใจว่าได้เพิ่ม callback URL ในคอนโซล Firebase เป็น callback URL ในแอปพลิเคชัน GitHub บนคอนโซลนักพัฒนาซอฟต์แวร์
ตัวอย่างเช่น:
สร้างผู้ให้บริการ GitHub และระบุข้อมูลประจำตัวให้กับเมธอด signInWithPopup
การดำเนินการนี้จะเรียกหน้าต่างใหม่ให้ปรากฏขึ้นพร้อมท์ให้ผู้ใช้ลงชื่อเข้าใช้แอปพลิเคชัน GitHub ของคุณ:
Future<UserCredential> signInWithGitHub() async {
// Create a new provider
GithubAuthProvider githubProvider = GithubAuthProvider();
// Once signed in, return the UserCredential
return await FirebaseAuth.instance.signInWithPopup(githubProvider);
// Or use signInWithRedirect
// return await FirebaseAuth.instance.signInWithRedirect(githubProvider);
}
Yahoo
ตรวจสอบให้แน่ใจว่าผู้ให้บริการลงชื่อเข้าใช้ "Yahoo" เปิดใช้งานอยู่บน คอนโซล Firebase ด้วยชุดคีย์ API และชุดข้อมูลลับของ API ตรวจสอบให้แน่ใจด้วยว่า Firebase OAuth เปลี่ยนเส้นทาง URI ของคุณ (เช่น my-app-12345.firebaseapp.com/__/auth/handler) ถูกตั้งค่าเป็น URI เปลี่ยนเส้นทางในการกำหนดค่า Yahoo Developer Network ของแอปของคุณ
iOS+
ก่อนที่คุณจะเริ่มต้น ให้ กำหนดค่า Yahoo Login สำหรับ iOS และเพิ่ม รูปแบบ URL ที่กำหนดเองให้กับ Runner ของคุณ (ขั้นตอนที่ 1)
Android
ก่อนที่คุณจะเริ่มต้น ให้ กำหนดค่า Yahoo Login สำหรับ Android
อย่าลืมเพิ่มลายนิ้วมือ SHA-1 ของแอป
เว็บ
ทำงานออกจากกล่อง
import 'package:firebase_auth/firebase_auth.dart';
Future<UserCredential> signInWithYahoo() async {
final yahooProvider = YahooAuthProvider();
if (kIsWeb) {
await _auth.signInWithPopup(yahooProvider);
} else {
await _auth.signInWithProvider(yahooProvider);
}
}
การใช้โทเค็นการเข้าถึง OAuth
ด้วยการใช้ AuthProvider คุณสามารถเรียกโทเค็นการเข้าถึงที่เชื่อมโยงกับผู้ให้บริการได้โดยส่งคำขอดังต่อไปนี้
final appleProvider = AppleAuthProvider();
final user = await FirebaseAuth.instance.signInWithProvider(appleProvider);
final accessToken = user.credential?.accessToken;
// You can send requests with the `accessToken`
การเชื่อมโยงผู้ให้บริการการตรวจสอบสิทธิ์
หากคุณต้องการเชื่อมโยงผู้ให้บริการกับผู้ใช้ปัจจุบัน คุณสามารถใช้วิธีการต่อไปนี้: ```dart await FirebaseAuth.instance.signInAnonymously();
สุดท้าย appleProvider = AppleAuthProvider ();
ถ้า (kIsWeb) { รอ FirebaseAuth.instance.currentUser?.linkWithPopup (appleProvider);
// คุณสามารถใช้ linkWithRedirect
} อื่นได้ { await FirebaseAuth.instance.currentUser?.linkWithProvider(appleProvider); }
// คุณเป็นผู้ใช้ที่ไม่ระบุชื่อได้รับการอัปเกรดเพื่อให้สามารถเชื่อมต่อกับลงชื่อเข้าใช้ด้วย Apple ```
ตรวจสอบสิทธิ์อีกครั้งกับผู้ให้บริการ
รูปแบบเดียวกันนี้สามารถใช้กับ reauthenticateWithProvider
ซึ่งสามารถใช้เพื่อดึงข้อมูลประจำตัวใหม่สำหรับการดำเนินการที่มีความละเอียดอ่อนซึ่งต้องเข้าสู่ระบบล่าสุด
final appleProvider = AppleAuthProvider();
if (kIsWeb) {
await FirebaseAuth.instance.currentUser?.reauthenticateWithPopup(appleProvider);
// Or you can reauthenticate with a redirection
// await FirebaseAuth.instance.currentUser?.reauthenticateWithRedirect(appleProvider);
} else {
await FirebaseAuth.instance.currentUser?.reauthenticateWithProvider(appleProvider);
}
// You can now perform sensitive operations