Birleşik kimlik ve sosyal oturum açma

Sosyal kimlik doğrulama, kullanıcının bir hesapta veya bağlantıda oturum açmasına olanak tanıyan çok adımlı bir kimlik doğrulama akışıdır başka bir profille paylaşabilirsiniz.

Hem yerel platformlar hem de web desteği, signInWithCredential hizmetine iletilebilecek kimlik bilgisi oluşturmayı destekler veya linkWithCredential yöntem. Alternatif olarak, web platformlarında kimlik doğrulama işlemini şuradan da tetikleyebilirsiniz: pop-up veya yönlendirme yapıyor.

Google

Çoğu yapılandırma, Firebase ile Google Oturum Açma özelliği kullanılırken zaten kurulur ancak makinenizin SHA1 anahtarı, Android ile kullanılmak üzere yapılandırıldı. Anahtarın nasıl oluşturulacağını şurada görebilirsiniz: kimlik doğrulama belgelerine bakın.

"Google"ın, Oturum açma sağlayıcısının, Firebase Konsolu'nda etkinleştirilmiş olması gerekir.

Kullanıcınız manuel olarak bir hesap kaydettikten sonra Google ile oturum açarsa kimlik doğrulama sağlayıcısı otomatik olarak Bu değişiklik, güvenilir sağlayıcılara ait Firebase Authentications kavramından kaynaklanıyor. Web sitemiz g.co/newsinitiative/labs üzerinden bu sayfaya göz atın.

iOS+ ve Android

Yerel platformlarda kimlik doğrulama akışını başlatmak için 3. taraf kitaplığı gerekir.

Resmi google_sign_in eklentisini yükleyin.

Yüklendikten sonra oturum açma akışını tetikleyin ve yeni bir kimlik bilgisi oluşturun:

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);
}

Web

Firebase SDK'sı, web'de Firebase projeniz kullanılarak kimlik doğrulama akışının otomatik olarak yönetilmesi için destek sağlar. Örneğin:

Ek izin kapsamı sağlayarak bir Google kimlik doğrulama sağlayıcı oluşturma başka hangi bilgileri vermeniz gerekir?

GoogleAuthProvider googleProvider = GoogleAuthProvider();

googleProvider.addScope('https://www.googleapis.com/auth/contacts.readonly');
googleProvider.setCustomParameters({
  'login_hint': 'user@example.com'
});

signInWithPopup yöntemine kimlik bilgisini sağlayın. Bu işlem, yeni bir kullanıcının projenizde oturum açmasını isteyen bir pencere görürsünüz. Alternatif olarak signInWithRedirect öğesini kullanarak kimlik doğrulama işlemini tekrarlamanız gerekir.

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 (yalnızca Android)

"Play Games"in Oturum açma sağlayıcısının, Firebase Konsolu'nda etkinleştirilmiş olması gerekir. Play Games Firebase proje kurulumu için bu talimatları uygulayın.

Play Games hizmetlerini yapılandırma talimatlarını uygulayın Firebase uygulamanızla.

Android

Future<void> _signInWithPlayGames() async {
  // Get server auth code from 3rd party provider
  // See PR description for details on how you might get the server auth code:
  // https://github.com/firebase/flutterfire/pull/12201#issue-2100392487
  final serverAuthCode = '...';
  final playGamesCredential = PlayGamesAuthProvider.credential(
                                          serverAuthCode: serverAuthCode);

  await FirebaseAuth.instance
    .signInWithCredential(playGamesCredential);
}

Facebook

Başlamadan önce Facebook Geliştirici Uygulamanızı kurun ve Facebook Girişi'ni etkinleştirmek için kurulum işlemini uygulayın.

"Facebook" olduğundan emin olun Oturum açma sağlayıcısının, Firebase Konsolu'nda etkinleştirilmiş olması gerekir. değerine ayarlayın.

iOS+ ve Android

Yerel platformlarda hem Facebook SDK'sını yüklemek hem de kimlik doğrulama akışını tetiklemek için 3. taraf kitaplığı gerekir.

flutter_facebook_auth eklentisini yükleyin.

Eklenti belgelerindeki adımları uygulayarak hem Android hem de iOS Facebook SDK'ları başlatıldı sağlayabilir. İşlem tamamlandığında, oturum açma akışını başlatın, Facebook kimlik bilgisi oluşturun ve kullanıcının oturum açmasını sağlayın:

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);
}

Web

Firebase SDK'sı, web'de kimlik doğrulama akışını otomatik olarak yönetmek için Firebase konsolunda sağlanan Facebook uygulaması ayrıntıları. Örneğin:

Ek izin kapsamı sağlayarak bir Facebook sağlayıcı oluşturma başka bir belge de kullanabilirsiniz.

Firebase konsolundaki OAuth yönlendirme URI'sinin geçerli bir OAuth Yönlendirme URI'si olarak eklendiğinden emin olun. inceleyebilirsiniz.

FacebookAuthProvider facebookProvider = FacebookAuthProvider();

facebookProvider.addScope('email');
facebookProvider.setCustomParameters({
  'display': 'popup',
});

signInWithPopup yöntemine kimlik bilgisini sağlayın. Bu işlem, yeni bir kullanıcının Facebook uygulamanızda oturum açmasını isteyen bir pencere görünür:

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);
}

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);
  }
}

Yalnızca Apple platformunda oturum açma

iOS+ platformlarında Apple ile oturum açmak için aşağıdaki yöntemle de erişilebilir:

// Implement a function that generates a nonce. See iOS documentation for how to create a nonce:
// https://firebase.google.com/docs/auth/ios/apple#sign_in_with_apple_and_authenticate_with_firebase
String rawNonce = createNonce();
// Create a SHA-256 hash of the nonce. Consider using the `crypto` package from the pub.dev registry.
String hashSHA256String = createHashSHA256String(rawNonce);
// Use the hash of the nonce to get the idToken. Consider using the `sign_in_with_apple` plugin from the pub.dev registry.
String idToken = await getIdToken();

final fullName = AppleFullPersonName(
  familyName: 'Name',
  givenName: 'Your',
);
// Use the `rawNonce` and `idToken` to get the credential
final credential = AppleAuthProvider.credentialWithIDToken(
  idToken,
  rawNonce,
  fullName,
);

await FirebaseAuth.instance.signInWithCredential(credential);

Apple kimlik doğrulama jetonlarını iptal et

Apple platformlarında Apple ile oturum açmak, kullanılabilecek bir yetkilendirme kodu döndürür revokeTokenWithAuthorizationCode() kullanarak Apple kimlik doğrulama jetonunu iptal edin API'ye gidin.

import 'package:firebase_auth/firebase_auth.dart';

Future<UserCredential> signInWithApple() async {
  final appleProvider = AppleAuthProvider();

  UserCredential userCredential = await FirebaseAuth.instance.signInWithPopup(appleProvider);
  // Keep the authorization code returned from Apple platforms
  String? authCode = userCredential.additionalUserInfo?.authorizationCode;
  // Revoke Apple auth token
  await FirebaseAuth.instance.revokeTokenWithAuthorizationCode(authCode!);
}

Apple Game Center (yalnızca Apple)

"Oyun Merkezi"nin doğru olduğundan emin olun. Oturum açma sağlayıcısının, Firebase Konsolu'nda etkinleştirilmiş olması gerekir. Oyun Merkezi Firebase proje kurulumu için bu talimatları uygulayın.

Firebase Game Center kimlik bilgisi verilebilmesi ve Firebase üzerinden giriş yapılabilmesi için Game Center'a giriş yapmanız gerekir. İlgili bazı talimatları aşağıda bulabilirsiniz konusunda daha fazla bilgi edineceksiniz.

iOS ve üzeri

Future<void> _signInWithGameCenter() async {
  final credential = GameCenterAuthProvider.credential();
  await FirebaseAuth.instance
      .signInWithCredential(credential);
}

Microsoft

iOS ve üzeri

Başlamadan önce iOS için Microsoft Giriş'i yapılandırın ve özel URL şemalarını ekleyin adresine e-posta gönderin (1. adım).

Android

Başlamadan önce Android için Microsoft Giriş'i yapılandırın.

Uygulamanızın SHA-1 parmak izini eklemeyi unutmayın.

Web

Başlamadan önce Web için Microsoft Giriş'i yapılandırın.

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

"Twitter"ın açık olduğundan emin olun Oturum açma sağlayıcısının, Firebase Konsolu'nda etkinleştirilmiş olması ile değiştirin. Firebase OAuth yönlendirme URI'nizin (ör. my-app-12345.firebaseapp.com/__/auth/handler) olduğundan emin olun Twitter uygulamanızın yapılandırmasında uygulamanızın ayarlar sayfasında Yetkilendirme geri çağırma URL'niz olarak ayarlanır.

Ayrıca, uygulamanıza bağlı olarak üst düzey API erişimi istemeniz de gerekebilir.

iOS ve üzeri

Özel URL şemanızı iOS kılavuzunun 1. adımında açıklandığı şekilde yapılandırmanız gerekir.

Android

Uygulamanızın SHA-1 parmak izini henüz belirtmediyseniz bunu Ayarlar sayfasından yapın bölümüne gidin. Uygulamanızın SHA-1 parmak izini nasıl alacağınızla ilgili ayrıntılar için İstemcinizin Kimliğini Doğrulama başlıklı makaleyi inceleyin.

Web

Kullanıma hazır.

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

GitHub Geliştirici Ayarları'nda bir OAuth uygulaması kurduğunuzdan emin olun ve "GitHub"ın Oturum açma sağlayıcısı, Firebase Konsolu'nda etkinleştirilmiş GitHub uygulamasında geri çağırma URL'si ayarlanarak, İstemci Kimliği ve Gizli Anahtar ayarlandığından emin olun.

iOS+ ve Android

Yerel platformlar için google-services.json ve GoogleService-Info.plist eklemeniz gerekir.

iOS için iOS kılavuzunun 1. adımında açıklandığı şekilde özel URL şemasını ekleyin.

Future<UserCredential> signInWithGitHub() async {
  // Create a new provider
  GithubAuthProvider githubProvider = GithubAuthProvider();

  return await FirebaseAuth.instance.signInWithProvider(githubProvider);
}

Web

GitHub SDK'sı, web'de kimlik doğrulama akışını otomatik olarak yönetmek için Firebase konsolunda sağlanan GitHub uygulaması ayrıntıları. Firebase konsoluna geri çağırma URL'sinin eklendiğinden emin olun olarak, geliştirici konsolundaki GitHub uygulamanızda bir geri çağırma URL'si olarak kullanabilirsiniz.

Örneğin:

Bir GitHub sağlayıcısı oluşturun ve signInWithPopup yöntemine kimlik bilgisini sağlayın. Bu işlem, yeni bir kullanıcının GitHub uygulamanızda oturum açmasını isteyen bir pencere açılır:

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" Oturum açma sağlayıcısının, Firebase Konsolu'nda etkinleştirilmiş olması ile değiştirin. Ayrıca Firebase OAuth yönlendirme URI'nizin (ör. my-app-12345.firebaseapp.com/__/auth/handler) olduğundan emin olun uygulamanızın Yahoo Geliştirici Ağı yapılandırmasında yönlendirme URI'si olarak ayarlanır.

iOS ve üzeri

Başlamadan önce, iOS için Yahoo Girişi'ni yapılandırın ve özel URL şemalarını ekleyin adresine e-posta gönderin (1. adım).

Android

Başlamadan önce Android için Yahoo Login'i yapılandırın.

Uygulamanızın SHA-1 parmak izini eklemeyi unutmayın.

Web

Kullanıma hazır.

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 erişim jetonunu kullanma

AuthProvider kullanarak sağlayıcıyla ilişkilendirilmiş erişim jetonunu alabilirsiniz. .

final appleProvider = AppleAuthProvider();

final user = await FirebaseAuth.instance.signInWithProvider(appleProvider);
final accessToken = user.credential?.accessToken;

// You can send requests with the `accessToken`

Kimlik Doğrulama Sağlayıcısı Bağlama

Bir sağlayıcıyı geçerli bir kullanıcıya bağlamak istiyorsanız aşağıdaki yöntemi kullanabilirsiniz: ```dart await FirebaseAuth.instance.signInAnonymously();

final appleProvider = AppleAuthProvider();

if (kIsWeb) { await FirebaseAuth.instance.currentUser?.linkWithPopup(appleProvider);

// Ayrıca, linkWithRedirect öğesini de kullanabilirsiniz } else { await FirebaseAuth.instance.currentUser?.linkWithProvider(appleProvider); }

// Anonim kullanıcınız artık Apple ile Oturum Açma ile bağlantı kurabilecek şekilde yükseltildi ```

Sağlayıcı ile yeniden kimlik doğrula

Aynı kalıp, yeni verileri almak için kullanılabilen reauthenticateWithProvider ile kullanılabilir. yakın zamanda giriş yapılmasını gerektiren hassas işlemler için kimlik bilgileri.

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