เอกลักษณ์ของสหพันธรัฐและการลงชื่อเข้าใช้โซเชียล

การรับรองความถูกต้องทางสังคมเป็นขั้นตอนการตรวจสอบความถูกต้องแบบหลายขั้นตอน ช่วยให้คุณสามารถลงชื่อเข้าใช้บัญชีผู้ใช้หรือเชื่อมโยงกับบัญชีที่มีอยู่

ทั้งแพลตฟอร์มเนทีฟและเว็บรองรับการสร้างข้อมูลรับรองซึ่งสามารถส่งผ่านไปยังเมธอด signInWithCredential หรือ linkWithCredential อีกทางหนึ่งบนแพลตฟอร์มเว็บ คุณสามารถทริกเกอร์กระบวนการตรวจสอบสิทธิ์ผ่านป๊อปอัปหรือเปลี่ยนเส้นทางได้

Google

การกำหนดค่าส่วนใหญ่ได้รับการตั้งค่าไว้แล้วเมื่อใช้ Google Sign-In กับ Firebase อย่างไรก็ตาม คุณต้องแน่ใจว่าคีย์ SHA1 ของเครื่องของคุณได้รับการกำหนดค่าให้ใช้งานกับ Android คุณสามารถดูวิธีสร้างคีย์ได้ใน เอกสารรับรองความถูกต้อง

ตรวจสอบให้แน่ใจว่าเปิดใช้งานผู้ให้บริการการลงชื่อเข้าใช้ "Google" บน Firebase Console

หากผู้ใช้ลงชื่อเข้าใช้ด้วย Google หลังจากลงทะเบียนบัญชีด้วยตนเองแล้ว ผู้ให้บริการตรวจสอบสิทธิ์จะเปลี่ยนเป็น Google โดยอัตโนมัติ เนื่องจากแนวคิด Firebase Authentications ของผู้ให้บริการที่เชื่อถือได้ คุณสามารถหาข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ ได้ที่นี่

iOS+ และแอนดรอยด์

บนแพลตฟอร์มแบบเนทีฟ จำเป็นต้องมีไลบรารีของบุคคลที่สามเพื่อทริกเกอร์โฟลว์การตรวจสอบความถูกต้อง

ติดตั้งปลั๊กอิน 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 เกม

คุณสามารถตรวจสอบสิทธิ์ผู้ใช้ในเกม Android ของคุณโดยใช้ Play Games Sign-In

แอนดรอยด์

ทำตามคำแนะนำสำหรับการตั้งค่า 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 ของคุณและทำตามขั้นตอนการตั้งค่าเพื่อเปิดใช้งานการเข้าสู่ระบบด้วย Facebook

ตรวจสอบให้แน่ใจว่าเปิดใช้งานผู้ให้บริการลงชื่อเข้าใช้ "Facebook" บน Firebase Console ด้วย Facebook App ID และ Secret set

iOS+ และแอนดรอยด์

บนแพลตฟอร์มแบบเนทีฟ จำเป็นต้องมีไลบรารีของบุคคลที่สามเพื่อติดตั้ง Facebook SDK และทริกเกอร์โฟลว์การตรวจสอบสิทธิ์

ติดตั้งปลั๊กอิน flutter_facebook_auth

คุณจะต้องทำตามขั้นตอนในเอกสารประกอบของปลั๊กอินเพื่อให้แน่ใจว่า Facebook SDK ทั้ง Android และ iOS ได้รับการกำหนดค่าเริ่มต้นอย่างถูกต้อง เมื่อเสร็จแล้ว ให้เริ่มขั้นตอนการลงชื่อเข้าใช้ สร้างข้อมูลรับรอง 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 โดยให้ ขอบเขตการอนุญาต เพิ่มเติมที่คุณต้องการได้รับจากผู้ใช้

ตรวจสอบให้แน่ใจว่าได้เพิ่ม URI การเปลี่ยนเส้นทาง OAuth จากคอนโซล Firebase เป็น URI การเปลี่ยนเส้นทาง OAuth ที่ถูกต้องในแอพ 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"

แอนดรอยด์

ก่อนที่คุณจะเริ่ม ให้กำหนดค่าลงชื่อเข้าใช้ด้วย 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);
  }
}

ไมโครซอฟท์

iOS+

ก่อนที่คุณจะเริ่ม กำหนดค่าการเข้าสู่ระบบ Microsoft สำหรับ iOS และเพิ่ม รูปแบบ URL ที่กำหนดเองให้กับนักวิ่งของคุณ (ขั้นตอนที่ 1)

แอนดรอยด์

ก่อนที่คุณจะเริ่ม กำหนดค่าการเข้าสู่ระบบ Microsoft สำหรับ 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 Console ด้วยชุดคีย์ API และ API Secret ตรวจสอบให้แน่ใจว่า URI การเปลี่ยนเส้นทาง Firebase OAuth ของคุณ (เช่น my-app-12345.firebaseapp.com/__/auth/handler) ถูกตั้งค่าเป็น URL โทรกลับการให้สิทธิ์ของคุณในหน้าการตั้งค่าของแอปใน การกำหนดค่าแอป Twitter ของคุณ

นอกจากนี้ คุณอาจต้องขอ การเข้าถึง API ที่ยกระดับ ทั้งนี้ขึ้นอยู่กับแอปของคุณ

iOS+

คุณต้องกำหนดค่าโครงร่าง URL ที่กำหนดเองตามที่ อธิบายไว้ในคู่มือ iOS ขั้นตอนที่ 1

แอนดรอยด์

หากคุณยังไม่ได้ระบุลายนิ้วมือ 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+ และแอนดรอยด์

สำหรับแพลตฟอร์มดั้งเดิม คุณต้องเพิ่ม 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 ตรวจสอบให้แน่ใจว่าได้เพิ่ม URL โทรกลับในคอนโซล Firebase เป็น 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" บน คอนโซล Firebase ด้วยชุดรหัส API และรหัสลับ API นอกจากนี้ ตรวจสอบให้แน่ใจว่า URI การเปลี่ยนเส้นทาง Firebase OAuth ของคุณ (เช่น my-app-12345.firebaseapp.com/__/auth/handler) ถูกตั้งค่าเป็น URI การเปลี่ยนเส้นทางในการกำหนดค่า Yahoo Developer Network ของแอป

iOS+

ก่อนที่คุณจะเริ่มต้น ให้กำหนดค่าการเข้าสู่ระบบ Yahoo สำหรับ iOS และเพิ่ม รูปแบบ URL ที่กำหนดเองให้กับ Runner ของคุณ (ขั้นตอนที่ 1)

แอนดรอยด์

ก่อนที่คุณจะเริ่มต้น ให้กำหนดค่าการเข้าสู่ระบบ Yahoo สำหรับ 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 wait FirebaseAuth.instance.signInAnonymously();

appleProvider สุดท้าย = AppleAuthProvider ();

ถ้า (kIsWeb) { กำลังรอ FirebaseAuth.instance.currentUser?.linkWithPopup(appleProvider);

// คุณสามารถใช้ linkWithRedirect } อย่างอื่น { รอคอย FirebaseAuth.instance.currentUser?.linkWithProvider(appleProvider); }

// ขณะนี้คุณเป็นผู้ใช้นิรนามได้รับการอัปเกรดเพื่อให้สามารถเชื่อมต่อกับ Sign In With 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
,

การรับรองความถูกต้องทางสังคมเป็นขั้นตอนการตรวจสอบความถูกต้องแบบหลายขั้นตอน ช่วยให้คุณสามารถลงชื่อเข้าใช้บัญชีผู้ใช้หรือเชื่อมโยงกับบัญชีที่มีอยู่

ทั้งแพลตฟอร์มเนทีฟและเว็บรองรับการสร้างข้อมูลรับรองซึ่งสามารถส่งผ่านไปยังเมธอด signInWithCredential หรือ linkWithCredential อีกทางหนึ่งบนแพลตฟอร์มเว็บ คุณสามารถทริกเกอร์กระบวนการตรวจสอบสิทธิ์ผ่านป๊อปอัปหรือเปลี่ยนเส้นทางได้

Google

การกำหนดค่าส่วนใหญ่ได้รับการตั้งค่าไว้แล้วเมื่อใช้ Google Sign-In กับ Firebase อย่างไรก็ตาม คุณต้องแน่ใจว่าคีย์ SHA1 ของเครื่องของคุณได้รับการกำหนดค่าให้ใช้งานกับ Android คุณสามารถดูวิธีสร้างคีย์ได้ใน เอกสารรับรองความถูกต้อง

ตรวจสอบให้แน่ใจว่าเปิดใช้งานผู้ให้บริการการลงชื่อเข้าใช้ "Google" บน Firebase Console

หากผู้ใช้ลงชื่อเข้าใช้ด้วย Google หลังจากลงทะเบียนบัญชีด้วยตนเองแล้ว ผู้ให้บริการตรวจสอบสิทธิ์จะเปลี่ยนเป็น Google โดยอัตโนมัติ เนื่องจากแนวคิด Firebase Authentications ของผู้ให้บริการที่เชื่อถือได้ คุณสามารถหาข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ ได้ที่นี่

iOS+ และแอนดรอยด์

บนแพลตฟอร์มแบบเนทีฟ จำเป็นต้องมีไลบรารีของบุคคลที่สามเพื่อทริกเกอร์โฟลว์การตรวจสอบความถูกต้อง

ติดตั้งปลั๊กอิน 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 เกม

คุณสามารถตรวจสอบสิทธิ์ผู้ใช้ในเกม Android ของคุณโดยใช้ Play Games Sign-In

แอนดรอยด์

ทำตามคำแนะนำสำหรับการตั้งค่า 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 ของคุณและทำตามขั้นตอนการตั้งค่าเพื่อเปิดใช้งานการเข้าสู่ระบบด้วย Facebook

ตรวจสอบให้แน่ใจว่าเปิดใช้งานผู้ให้บริการลงชื่อเข้าใช้ "Facebook" บน Firebase Console ด้วย Facebook App ID และ Secret set

iOS+ และแอนดรอยด์

บนแพลตฟอร์มแบบเนทีฟ จำเป็นต้องมีไลบรารีของบุคคลที่สามเพื่อติดตั้ง Facebook SDK และทริกเกอร์โฟลว์การตรวจสอบสิทธิ์

ติดตั้งปลั๊กอิน flutter_facebook_auth

คุณจะต้องทำตามขั้นตอนในเอกสารประกอบของปลั๊กอินเพื่อให้แน่ใจว่า Facebook SDK ทั้ง Android และ iOS ได้รับการกำหนดค่าเริ่มต้นอย่างถูกต้อง เมื่อเสร็จแล้ว ให้เริ่มขั้นตอนการลงชื่อเข้าใช้ สร้างข้อมูลรับรอง 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 โดยให้ ขอบเขตการอนุญาต เพิ่มเติมที่คุณต้องการได้รับจากผู้ใช้

ตรวจสอบให้แน่ใจว่าได้เพิ่ม URI การเปลี่ยนเส้นทาง OAuth จากคอนโซล Firebase เป็น URI การเปลี่ยนเส้นทาง OAuth ที่ถูกต้องในแอพ 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"

แอนดรอยด์

ก่อนที่คุณจะเริ่ม ให้กำหนดค่าลงชื่อเข้าใช้ด้วย 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);
  }
}

ไมโครซอฟท์

iOS+

ก่อนที่คุณจะเริ่ม กำหนดค่าการเข้าสู่ระบบ Microsoft สำหรับ iOS และเพิ่ม รูปแบบ URL ที่กำหนดเองให้กับนักวิ่งของคุณ (ขั้นตอนที่ 1)

แอนดรอยด์

ก่อนที่คุณจะเริ่ม กำหนดค่าการเข้าสู่ระบบ Microsoft สำหรับ 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 Console ด้วยชุดคีย์ API และ API Secret ตรวจสอบให้แน่ใจว่า URI การเปลี่ยนเส้นทาง Firebase OAuth ของคุณ (เช่น my-app-12345.firebaseapp.com/__/auth/handler) ถูกตั้งค่าเป็น URL โทรกลับการให้สิทธิ์ของคุณในหน้าการตั้งค่าของแอปใน การกำหนดค่าแอป Twitter ของคุณ

นอกจากนี้ คุณอาจต้องขอ การเข้าถึง API ที่ยกระดับ ทั้งนี้ขึ้นอยู่กับแอปของคุณ

iOS+

คุณต้องกำหนดค่าโครงร่าง URL ที่กำหนดเองตามที่ อธิบายไว้ในคู่มือ iOS ขั้นตอนที่ 1

แอนดรอยด์

หากคุณยังไม่ได้ระบุลายนิ้วมือ 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+ และแอนดรอยด์

สำหรับแพลตฟอร์มดั้งเดิม คุณต้องเพิ่ม 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 ตรวจสอบให้แน่ใจว่าได้เพิ่ม URL โทรกลับในคอนโซล Firebase เป็น 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" บน คอนโซล Firebase ด้วยชุดรหัส API และรหัสลับ API นอกจากนี้ ตรวจสอบให้แน่ใจว่า URI การเปลี่ยนเส้นทาง Firebase OAuth ของคุณ (เช่น my-app-12345.firebaseapp.com/__/auth/handler) ถูกตั้งค่าเป็น URI การเปลี่ยนเส้นทางในการกำหนดค่า Yahoo Developer Network ของแอป

iOS+

ก่อนที่คุณจะเริ่มต้น ให้กำหนดค่าการเข้าสู่ระบบ Yahoo สำหรับ iOS และเพิ่ม รูปแบบ URL ที่กำหนดเองให้กับ Runner ของคุณ (ขั้นตอนที่ 1)

แอนดรอยด์

ก่อนที่คุณจะเริ่มต้น ให้กำหนดค่าการเข้าสู่ระบบ Yahoo สำหรับ 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 wait FirebaseAuth.instance.signInAnonymously();

appleProvider สุดท้าย = AppleAuthProvider ();

ถ้า (kIsWeb) { กำลังรอ FirebaseAuth.instance.currentUser?.linkWithPopup(appleProvider);

// คุณสามารถใช้ linkWithRedirect } อย่างอื่น { รอคอย FirebaseAuth.instance.currentUser?.linkWithProvider(appleProvider); }

// ขณะนี้คุณเป็นผู้ใช้นิรนามได้รับการอัปเกรดเพื่อให้สามารถเชื่อมต่อกับ Sign In With 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