Xác thực xã hội là luồng xác thực nhiều bước, cho phép bạn đăng nhập người dùng vào tài khoản hoặc liên kết họ với tài khoản hiện có.
Cả nền tảng gốc và web đều hỗ trợ tạo thông tin xác thực, sau đó có thể chuyển thông tin đăng nhập này sang các phương thức signInWithCredential
hoặc linkWithCredential
. Ngoài ra, trên nền tảng web, bạn có thể kích hoạt quy trình xác thực thông qua cửa sổ bật lên hoặc chuyển hướng.
Hầu hết cấu hình đã được thiết lập khi sử dụng Đăng nhập bằng Google với Firebase, tuy nhiên, bạn cần đảm bảo rằng khóa SHA1 của máy đã được định cấu hình để sử dụng với Android. Bạn có thể xem cách tạo khóa trong tài liệu xác thực .
Đảm bảo nhà cung cấp dịch vụ đăng nhập "Google" được bật trên Bảng điều khiển Firebase .
Nếu người dùng của bạn đăng nhập bằng Google, sau khi đã đăng ký tài khoản theo cách thủ công, nhà cung cấp dịch vụ xác thực của họ sẽ tự động thay đổi thành Google, do khái niệm Xác thực Firebase về các nhà cung cấp đáng tin cậy. Bạn có thể tìm hiểu thêm về điều này ở đây .
iOS+ và Android
Trên các nền tảng gốc, cần có thư viện của bên thứ 3 để kích hoạt luồng xác thực.
Cài đặt plugin google_sign_in
chính thức.
Sau khi cài đặt, hãy kích hoạt quy trình đăng nhập và tạo thông tin xác thực mới:
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);
}
mạng
Trên web, SDK Firebase cung cấp hỗ trợ để tự động xử lý luồng xác thực bằng cách sử dụng dự án Firebase của bạn. Ví dụ:
Tạo nhà cung cấp xác thực của Google, cung cấp bất kỳ phạm vi quyền bổ sung nào mà bạn muốn lấy từ người dùng:
GoogleAuthProvider googleProvider = GoogleAuthProvider();
googleProvider.addScope('https://www.googleapis.com/auth/contacts.readonly');
googleProvider.setCustomParameters({
'login_hint': 'user@example.com'
});
Cung cấp thông tin xác thực cho phương thức signInWithPopup
. Thao tác này sẽ kích hoạt một cửa sổ mới xuất hiện nhắc người dùng đăng nhập vào dự án của bạn. Ngoài ra, bạn có thể sử dụng signInWithRedirect
để giữ quy trình xác thực trong cùng một cửa sổ.
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 Trò chơi
Bạn có thể xác thực người dùng trong trò chơi Android của mình bằng Đăng nhập Play Trò chơi.
Android
Làm theo hướng dẫn để thiết lập Google trên Android, sau đó định cấu hình dịch vụ Play Trò chơi bằng thông tin ứng dụng Firebase của bạn .
Thao tác sau đây sẽ kích hoạt quy trình đăng nhập, tạo thông tin xác thực mới và đăng nhập người dùng:
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);
}
Trước khi bắt đầu, hãy thiết lập Ứng dụng dành cho nhà phát triển Facebook của bạn và làm theo quy trình thiết lập để bật Đăng nhập Facebook.
Đảm bảo nhà cung cấp dịch vụ đăng nhập "Facebook" được bật trên Bảng điều khiển Firebase . với ID ứng dụng Facebook và bộ Bí mật.
iOS+ và Android
Trên các nền tảng gốc, cần có thư viện của bên thứ ba để vừa cài đặt Facebook SDK vừa kích hoạt quy trình xác thực.
Cài đặt plugin flutter_facebook_auth
.
Bạn sẽ cần làm theo các bước trong tài liệu plugin để đảm bảo rằng cả SDK Facebook dành cho Android và iOS đều đã được khởi chạy chính xác. Sau khi hoàn tất, hãy kích hoạt quy trình đăng nhập, tạo thông tin đăng nhập Facebook và đăng nhập người dùng:
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);
}
mạng
Trên web, SDK Firebase cung cấp hỗ trợ để tự động xử lý luồng xác thực bằng cách sử dụng chi tiết ứng dụng Facebook được cung cấp trên bảng điều khiển Firebase. Ví dụ:
Tạo một nhà cung cấp Facebook, cung cấp bất kỳ phạm vi quyền bổ sung nào mà bạn muốn lấy từ người dùng.
Đảm bảo rằng URI chuyển hướng OAuth từ bảng điều khiển Firebase được thêm dưới dạng URI chuyển hướng OAuth hợp lệ trong Ứng dụng Facebook của bạn.
FacebookAuthProvider facebookProvider = FacebookAuthProvider();
facebookProvider.addScope('email');
facebookProvider.setCustomParameters({
'display': 'popup',
});
Cung cấp thông tin xác thực cho phương thức signInWithPopup
. Thao tác này sẽ kích hoạt một cửa sổ mới xuất hiện nhắc người dùng đăng nhập vào ứng dụng Facebook của bạn:
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);
}
Quả táo
iOS+
Trước khi bạn bắt đầu, hãy định cấu hình Đăng nhập bằng Apple và bật Apple làm nhà cung cấp dịch vụ đăng nhập .
Tiếp theo, hãy đảm bảo rằng các ứng dụng Runner
của bạn có khả năng "Đăng nhập bằng Apple".
Android
Trước khi bạn bắt đầu, hãy định cấu hình Đăng nhập bằng Apple và bật Apple làm nhà cung cấp dịch vụ đăng nhập .
mạng
Trước khi bạn bắt đầu, hãy định cấu hình Đăng nhập bằng Apple và bật Apple làm nhà cung cấp dịch vụ đăng nhập .
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+
Trước khi bạn bắt đầu định cấu hình Đăng nhập Microsoft cho iOS và thêm các lược đồ URL tùy chỉnh vào Người chạy của bạn (bước 1) .
Android
Trước khi bạn bắt đầu định cấu hình Đăng nhập Microsoft cho Android .
Đừng quên thêm dấu vân tay SHA-1 của ứng dụng của bạn.
mạng
Trước khi bạn bắt đầu định cấu hình Đăng nhập Microsoft cho Web .
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);
}
}
Đảm bảo rằng nhà cung cấp dịch vụ đăng nhập "Twitter" được bật trên Bảng điều khiển Firebase với Khóa API và Bí mật API được đặt. Đảm bảo URI chuyển hướng OAuth Firebase của bạn (ví dụ: my-app-12345.firebaseapp.com/__/auth/handler) được đặt làm URL gọi lại Ủy quyền trong trang cài đặt của ứng dụng trên cấu hình ứng dụng Twitter của bạn.
Bạn cũng có thể cần yêu cầu quyền truy cập API nâng cao tùy thuộc vào ứng dụng của mình .
iOS+
Bạn cần định cấu hình lược đồ URL tùy chỉnh của mình như được mô tả trong hướng dẫn iOS bước 1 .
Android
Nếu bạn chưa chỉ định dấu vân tay SHA-1 cho ứng dụng của mình, hãy làm như vậy từ trang Cài đặt của bảng điều khiển Firebase. Tham khảo Xác thực ứng dụng khách của bạn để biết chi tiết về cách lấy dấu vân tay SHA-1 cho ứng dụng của bạn.
mạng
Sáng tạo.
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
Đảm bảo rằng bạn đã thiết lập Ứng dụng OAuth từ Cài đặt dành cho nhà phát triển GitHub của mình và nhà cung cấp dịch vụ đăng nhập "GitHub" được bật trên Bảng điều khiển Firebase với ID ứng dụng khách và Bí mật được đặt, với URL gọi lại được đặt trong ứng dụng GitHub.
iOS+ và Android
Đối với các nền tảng gốc, bạn cần thêm google-services.json
và GoogleService-Info.plist
.
Đối với iOS, hãy thêm lược đồ URL tùy chỉnh như được mô tả trong hướng dẫn iOS bước 1.
Future<UserCredential> signInWithGitHub() async {
// Create a new provider
GithubAuthProvider githubProvider = GithubAuthProvider();
return await FirebaseAuth.instance.signInWithProvider(githubProvider);
}
mạng
Trên web, GitHub SDK cung cấp hỗ trợ để tự động xử lý luồng xác thực bằng cách sử dụng chi tiết ứng dụng GitHub được cung cấp trên bảng điều khiển Firebase. Đảm bảo rằng URL gọi lại trong bảng điều khiển Firebase được thêm dưới dạng URL gọi lại trong ứng dụng GitHub của bạn trên bảng điều khiển dành cho nhà phát triển.
Ví dụ:
Tạo nhà cung cấp GitHub và cung cấp thông tin xác thực cho phương thức signInWithPopup
. Thao tác này sẽ kích hoạt một cửa sổ mới xuất hiện nhắc người dùng đăng nhập vào ứng dụng GitHub của bạn:
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
Đảm bảo nhà cung cấp dịch vụ đăng nhập "Yahoo" được bật trên Bảng điều khiển Firebase với Khóa API và Bí mật API được đặt. Ngoài ra, hãy đảm bảo URI chuyển hướng OAuth Firebase của bạn (ví dụ: my-app-12345.firebaseapp.com/__/auth/handler) được đặt làm URI chuyển hướng trong cấu hình Mạng nhà phát triển Yahoo của ứng dụng của bạn.
iOS+
Trước khi bạn bắt đầu, hãy định cấu hình Đăng nhập Yahoo cho iOS và thêm lược đồ URL tùy chỉnh vào Trình chạy của bạn (bước 1) .
Android
Trước khi bạn bắt đầu, hãy định cấu hình Đăng nhập Yahoo cho Android .
Đừng quên thêm dấu vân tay SHA-1 của ứng dụng của bạn.
mạng
Sáng tạo.
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);
}
}
Sử dụng mã thông báo truy cập OAuth
Bằng cách sử dụng AuthProvider, bạn có thể truy xuất mã thông báo truy cập được liên kết với nhà cung cấp bằng cách thực hiện yêu cầu sau.
final appleProvider = AppleAuthProvider();
final user = await FirebaseAuth.instance.signInWithProvider(appleProvider);
final accessToken = user.credential?.accessToken;
// You can send requests with the `accessToken`
Liên kết một nhà cung cấp xác thực
Nếu bạn muốn liên kết nhà cung cấp với người dùng hiện tại, bạn có thể sử dụng phương pháp sau: ```dart đang chờ FirebaseAuth.instance.signInAnonymous();
appleProvider cuối cùng = AppleAuthProvider();
if (kIsWeb) { đang chờ FirebaseAuth.instance.currentUser?.linkWithPopup(appleProvider);
// Bạn cũng có thể sử dụng linkWithRedirect
} other { đang chờ FirebaseAuth.instance.currentUser?.linkWithProvider(appleProvider); }
// Người dùng ẩn danh của bạn hiện đã được nâng cấp để có thể kết nối với Đăng nhập bằng Apple ```
Xác thực lại với nhà cung cấp
Mẫu tương tự có thể được sử dụng với reauthenticateWithProvider
có thể được sử dụng để truy xuất thông tin đăng nhập mới cho các hoạt động nhạy cảm yêu cầu đăng nhập gần đây.
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
,Xác thực xã hội là luồng xác thực nhiều bước, cho phép bạn đăng nhập người dùng vào tài khoản hoặc liên kết họ với tài khoản hiện có.
Cả nền tảng gốc và web đều hỗ trợ tạo thông tin xác thực, sau đó có thể chuyển thông tin đăng nhập này sang các phương thức signInWithCredential
hoặc linkWithCredential
. Ngoài ra, trên nền tảng web, bạn có thể kích hoạt quy trình xác thực thông qua cửa sổ bật lên hoặc chuyển hướng.
Hầu hết cấu hình đã được thiết lập khi sử dụng Đăng nhập bằng Google với Firebase, tuy nhiên, bạn cần đảm bảo rằng khóa SHA1 của máy đã được định cấu hình để sử dụng với Android. Bạn có thể xem cách tạo khóa trong tài liệu xác thực .
Đảm bảo nhà cung cấp dịch vụ đăng nhập "Google" được bật trên Bảng điều khiển Firebase .
Nếu người dùng của bạn đăng nhập bằng Google, sau khi đã đăng ký tài khoản theo cách thủ công, nhà cung cấp dịch vụ xác thực của họ sẽ tự động thay đổi thành Google, do khái niệm Xác thực Firebase về các nhà cung cấp đáng tin cậy. Bạn có thể tìm hiểu thêm về điều này ở đây .
iOS+ và Android
Trên các nền tảng gốc, cần có thư viện của bên thứ 3 để kích hoạt luồng xác thực.
Cài đặt plugin google_sign_in
chính thức.
Sau khi cài đặt, hãy kích hoạt quy trình đăng nhập và tạo thông tin xác thực mới:
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);
}
mạng
Trên web, SDK Firebase cung cấp hỗ trợ để tự động xử lý luồng xác thực bằng cách sử dụng dự án Firebase của bạn. Ví dụ:
Tạo nhà cung cấp xác thực của Google, cung cấp bất kỳ phạm vi quyền bổ sung nào mà bạn muốn lấy từ người dùng:
GoogleAuthProvider googleProvider = GoogleAuthProvider();
googleProvider.addScope('https://www.googleapis.com/auth/contacts.readonly');
googleProvider.setCustomParameters({
'login_hint': 'user@example.com'
});
Cung cấp thông tin xác thực cho phương thức signInWithPopup
. Thao tác này sẽ kích hoạt một cửa sổ mới xuất hiện nhắc người dùng đăng nhập vào dự án của bạn. Ngoài ra, bạn có thể sử dụng signInWithRedirect
để giữ quy trình xác thực trong cùng một cửa sổ.
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 Trò chơi
Bạn có thể xác thực người dùng trong trò chơi Android của mình bằng Đăng nhập Play Trò chơi.
Android
Làm theo hướng dẫn để thiết lập Google trên Android, sau đó định cấu hình dịch vụ Play Trò chơi bằng thông tin ứng dụng Firebase của bạn .
Thao tác sau đây sẽ kích hoạt quy trình đăng nhập, tạo thông tin xác thực mới và đăng nhập người dùng:
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);
}
Trước khi bắt đầu, hãy thiết lập Ứng dụng dành cho nhà phát triển Facebook của bạn và làm theo quy trình thiết lập để bật Đăng nhập Facebook.
Đảm bảo nhà cung cấp dịch vụ đăng nhập "Facebook" được bật trên Bảng điều khiển Firebase . với ID ứng dụng Facebook và bộ Bí mật.
iOS+ và Android
Trên các nền tảng gốc, cần có thư viện của bên thứ ba để vừa cài đặt Facebook SDK vừa kích hoạt quy trình xác thực.
Cài đặt plugin flutter_facebook_auth
.
Bạn sẽ cần làm theo các bước trong tài liệu plugin để đảm bảo rằng cả SDK Facebook dành cho Android và iOS đều đã được khởi chạy chính xác. Sau khi hoàn tất, hãy kích hoạt quy trình đăng nhập, tạo thông tin đăng nhập Facebook và đăng nhập người dùng:
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);
}
mạng
Trên web, SDK Firebase cung cấp hỗ trợ để tự động xử lý luồng xác thực bằng cách sử dụng chi tiết ứng dụng Facebook được cung cấp trên bảng điều khiển Firebase. Ví dụ:
Tạo một nhà cung cấp Facebook, cung cấp bất kỳ phạm vi quyền bổ sung nào mà bạn muốn lấy từ người dùng.
Đảm bảo rằng URI chuyển hướng OAuth từ bảng điều khiển Firebase được thêm dưới dạng URI chuyển hướng OAuth hợp lệ trong Ứng dụng Facebook của bạn.
FacebookAuthProvider facebookProvider = FacebookAuthProvider();
facebookProvider.addScope('email');
facebookProvider.setCustomParameters({
'display': 'popup',
});
Cung cấp thông tin xác thực cho phương thức signInWithPopup
. Thao tác này sẽ kích hoạt một cửa sổ mới xuất hiện nhắc người dùng đăng nhập vào ứng dụng Facebook của bạn:
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);
}
Quả táo
iOS+
Trước khi bạn bắt đầu, hãy định cấu hình Đăng nhập bằng Apple và bật Apple làm nhà cung cấp dịch vụ đăng nhập .
Tiếp theo, hãy đảm bảo rằng các ứng dụng Runner
của bạn có khả năng "Đăng nhập bằng Apple".
Android
Trước khi bạn bắt đầu, hãy định cấu hình Đăng nhập bằng Apple và bật Apple làm nhà cung cấp dịch vụ đăng nhập .
mạng
Trước khi bạn bắt đầu, hãy định cấu hình Đăng nhập bằng Apple và bật Apple làm nhà cung cấp dịch vụ đăng nhập .
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+
Trước khi bạn bắt đầu định cấu hình Đăng nhập Microsoft cho iOS và thêm các lược đồ URL tùy chỉnh vào Người chạy của bạn (bước 1) .
Android
Trước khi bạn bắt đầu định cấu hình Đăng nhập Microsoft cho Android .
Đừng quên thêm dấu vân tay SHA-1 của ứng dụng của bạn.
mạng
Trước khi bạn bắt đầu định cấu hình Đăng nhập Microsoft cho Web .
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);
}
}
Đảm bảo rằng nhà cung cấp dịch vụ đăng nhập "Twitter" được bật trên Bảng điều khiển Firebase với Khóa API và Bí mật API được đặt. Đảm bảo URI chuyển hướng OAuth Firebase của bạn (ví dụ: my-app-12345.firebaseapp.com/__/auth/handler) được đặt làm URL gọi lại Ủy quyền trong trang cài đặt của ứng dụng trên cấu hình ứng dụng Twitter của bạn.
Bạn cũng có thể cần yêu cầu quyền truy cập API nâng cao tùy thuộc vào ứng dụng của mình .
iOS+
Bạn cần định cấu hình lược đồ URL tùy chỉnh của mình như được mô tả trong hướng dẫn iOS bước 1 .
Android
Nếu bạn chưa chỉ định dấu vân tay SHA-1 cho ứng dụng của mình, hãy làm như vậy từ trang Cài đặt của bảng điều khiển Firebase. Tham khảo Xác thực ứng dụng khách của bạn để biết chi tiết về cách lấy dấu vân tay SHA-1 cho ứng dụng của bạn.
mạng
Sáng tạo.
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
Đảm bảo rằng bạn đã thiết lập Ứng dụng OAuth từ Cài đặt dành cho nhà phát triển GitHub của mình và nhà cung cấp dịch vụ đăng nhập "GitHub" được bật trên Bảng điều khiển Firebase với ID ứng dụng khách và Bí mật được đặt, với URL gọi lại được đặt trong ứng dụng GitHub.
iOS+ và Android
Đối với các nền tảng gốc, bạn cần thêm google-services.json
và GoogleService-Info.plist
.
Đối với iOS, hãy thêm lược đồ URL tùy chỉnh như được mô tả trong hướng dẫn iOS bước 1.
Future<UserCredential> signInWithGitHub() async {
// Create a new provider
GithubAuthProvider githubProvider = GithubAuthProvider();
return await FirebaseAuth.instance.signInWithProvider(githubProvider);
}
mạng
Trên web, GitHub SDK cung cấp hỗ trợ để tự động xử lý luồng xác thực bằng cách sử dụng chi tiết ứng dụng GitHub được cung cấp trên bảng điều khiển Firebase. Đảm bảo rằng URL gọi lại trong bảng điều khiển Firebase được thêm dưới dạng URL gọi lại trong ứng dụng GitHub của bạn trên bảng điều khiển dành cho nhà phát triển.
Ví dụ:
Tạo nhà cung cấp GitHub và cung cấp thông tin xác thực cho phương thức signInWithPopup
. Thao tác này sẽ kích hoạt một cửa sổ mới xuất hiện nhắc người dùng đăng nhập vào ứng dụng GitHub của bạn:
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
Đảm bảo nhà cung cấp dịch vụ đăng nhập "Yahoo" được bật trên Bảng điều khiển Firebase với Khóa API và Bí mật API được đặt. Ngoài ra, hãy đảm bảo URI chuyển hướng OAuth Firebase của bạn (ví dụ: my-app-12345.firebaseapp.com/__/auth/handler) được đặt làm URI chuyển hướng trong cấu hình Mạng nhà phát triển Yahoo của ứng dụng của bạn.
iOS+
Trước khi bạn bắt đầu, hãy định cấu hình Đăng nhập Yahoo cho iOS và thêm lược đồ URL tùy chỉnh vào Trình chạy của bạn (bước 1) .
Android
Trước khi bạn bắt đầu, hãy định cấu hình Đăng nhập Yahoo cho Android .
Đừng quên thêm dấu vân tay SHA-1 của ứng dụng của bạn.
mạng
Sáng tạo.
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);
}
}
Sử dụng mã thông báo truy cập OAuth
Bằng cách sử dụng AuthProvider, bạn có thể truy xuất mã thông báo truy cập được liên kết với nhà cung cấp bằng cách thực hiện yêu cầu sau.
final appleProvider = AppleAuthProvider();
final user = await FirebaseAuth.instance.signInWithProvider(appleProvider);
final accessToken = user.credential?.accessToken;
// You can send requests with the `accessToken`
Liên kết một nhà cung cấp xác thực
Nếu bạn muốn liên kết nhà cung cấp với người dùng hiện tại, bạn có thể sử dụng phương pháp sau: ```dart đang chờ FirebaseAuth.instance.signInAnonymous();
appleProvider cuối cùng = AppleAuthProvider();
if (kIsWeb) { đang chờ FirebaseAuth.instance.currentUser?.linkWithPopup(appleProvider);
// Bạn cũng có thể sử dụng linkWithRedirect
} other { đang chờ FirebaseAuth.instance.currentUser?.linkWithProvider(appleProvider); }
// Người dùng ẩn danh của bạn hiện đã được nâng cấp để có thể kết nối với Đăng nhập bằng Apple ```
Xác thực lại với nhà cung cấp
Mẫu tương tự có thể được sử dụng với reauthenticateWithProvider
có thể được sử dụng để truy xuất thông tin đăng nhập mới cho các hoạt động nhạy cảm yêu cầu đăng nhập gần đây.
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