查看 2022 年 Google I/O 大会上介绍的 Firebase 新动态。了解详情

Birleşik kimlik ve sosyal oturum açma

Sosyal kimlik doğrulama, bir kullanıcıyı bir hesapta oturum açmanıza veya mevcut bir hesapla ilişkilendirmenize olanak tanıyan çok adımlı bir kimlik doğrulama akışıdır.

Hem yerel platformlar hem de web, daha sonra signInWithCredential veya linkWithCredential yöntemlerine geçirilebilecek bir kimlik bilgisi oluşturmayı destekler. Alternatif olarak, web platformlarında, bir açılır pencere veya yönlendirme yoluyla kimlik doğrulama sürecini tetikleyebilirsiniz.

Google

Çoğu yapılandırma, Firebase ile Google Sign-In kullanırken zaten kuruludur, ancak makinenizin SHA1 anahtarının Android ile kullanım için yapılandırıldığından emin olmanız gerekir. Anahtarın nasıl oluşturulacağını doğrulama belgelerinde görebilirsiniz.

Firebase Konsolunda "Google" oturum açma sağlayıcısının etkinleştirildiğinden emin olun.

Kullanıcınız bir hesabı manuel olarak kaydettirdikten sonra Google'da oturum açarsa, Firebase Authentications'ın güvenilir sağlayıcılar konsepti nedeniyle kimlik doğrulama sağlayıcısı otomatik olarak Google'a geçer. Bu konuda daha fazla bilgiyi burada bulabilirsiniz .

iOS+ ve Android

Yerel platformlarda, kimlik doğrulama akışını tetiklemek için bir 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'de, Firebase SDK, Firebase projenizi kullanarak kimlik doğrulama akışının otomatik olarak işlenmesi için destek sağlar. Örneğin:

Kullanıcıdan almak istediğiniz herhangi bir ek izin kapsamı sağlayarak bir Google yetkilendirme sağlayıcısı oluşturun:

GoogleAuthProvider googleProvider = GoogleAuthProvider();

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

signInWithPopup yönteminin kimlik bilgilerini sağlayın. Bu, kullanıcının projenizde oturum açmasını isteyen yeni bir pencereyi tetikleyecektir. Alternatif olarak, kimlik doğrulama sürecini aynı pencerede tutmak için signInWithRedirect kullanabilirsiniz.

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 Oyunlar Oyna

Play Oyunlar Oturum Açma özelliğini kullanarak Android oyununuzdaki kullanıcıların kimliklerini doğrulayabilirsiniz.

Android

Android'de Google kurulumuna ilişkin talimatları uygulayın, ardından Play Oyunlar hizmetlerini Firebase uygulama bilgilerinizle yapılandırın.

Aşağıdakiler, oturum açma akışını tetikleyecek, yeni bir kimlik bilgisi oluşturacak ve kullanıcıda oturum açacaktır:

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

Başlamadan önce Facebook Geliştirici Uygulamanızı kurun ve Facebook Girişini etkinleştirmek için kurulum sürecini takip edin.

Firebase Konsolunda "Facebook" oturum açma sağlayıcısının etkinleştirildiğinden emin olun. Facebook Uygulama Kimliği ve Gizli seti ile.

iOS+ ve Android

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

flutter_facebook_auth eklentisini kurun.

Hem Android hem de iOS Facebook SDK'larının doğru şekilde başlatıldığından emin olmak için eklenti belgelerindeki adımları izlemeniz gerekecektir. Tamamlandığında, oturum açma akışını tetikleyin, bir Facebook kimlik bilgisi oluşturun ve kullanıcının oturumunu açı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'de, Firebase SDK, Firebase konsolunda sağlanan Facebook uygulama ayrıntılarını kullanarak kimlik doğrulama akışını otomatik olarak işlemek için destek sağlar. Örneğin:

Kullanıcıdan almak istediğiniz ek izin kapsamını sağlayan bir Facebook sağlayıcısı oluşturun.

Firebase konsolundan OAuth yönlendirme URI'sinin Facebook Uygulamanızda geçerli bir OAuth Yönlendirme URI'si olarak eklendiğinden emin olun.

FacebookAuthProvider facebookProvider = FacebookAuthProvider();

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

signInWithPopup yönteminin kimlik bilgilerini sağlayın. Bu, kullanıcının Facebook uygulamanızda oturum açmasını isteyen yeni bir pencereyi tetikleyecektir:

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

Elma

iOS+

Başlamadan önce, Apple ile Oturum Aç'ı yapılandırın ve oturum açma sağlayıcısı olarak Apple'ı etkinleştirin .

Ardından, Runner uygulamalarınızın "Apple ile Giriş Yap" özelliğine sahip olduğundan emin olun.

Android

Başlamadan önce, Apple ile Oturum Aç'ı yapılandırın ve oturum açma sağlayıcısı olarak Apple'ı etkinleştirin .

Başlamadan önce, Apple ile Oturum Aç'ı yapılandırın ve oturum açma sağlayıcısı olarak Apple'ı etkinleştirin .

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+

iOS için Microsoft Login'i yapılandırmaya başlamadan önce ve Runner'ınıza özel URL şemaları ekleyin (1. adım) .

Android

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

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

Başlamadan önce Web için Microsoft Login'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);
  }
}

heyecan

Bir API Anahtarı ve API Gizli Anahtarı seti ile Firebase Konsolunda "Twitter" oturum açma sağlayıcısının etkinleştirildiğinden emin olun. Firebase OAuth yönlendirme URI'nizin (ör. my-app-12345.firebaseapp.com/__/auth/handler) Twitter uygulamanızın yapılandırma sayfasında uygulamanızın ayarlar sayfasında Yetkilendirme geri arama URL'niz olarak ayarlandığından emin olun.

Ayrıca uygulamanıza bağlı olarak yükseltilmiş API erişimi istemeniz gerekebilir.

iOS+

iOS kılavuzu adım 1'de açıklandığı gibi özel URL şemanızı yapılandırmanız gerekir.

Android

Uygulamanızın SHA-1 parmak izini henüz belirlemediyseniz, bunu Firebase konsolunun Ayarlar sayfasından yapın. Uygulamanızın SHA-1 parmak izini nasıl alacağınızla ilgili ayrıntılar için İstemcinizin Kimliğini Doğrulama bölümüne bakın.

Kutunun dışında çalışı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ınızdan bir OAuth Uygulaması kurduğunuzdan ve Firebase Konsolunda "GitHub" oturum açma sağlayıcısının, İstemci Kimliği ve Sır ayarlı, GitHub uygulamasında geri arama URL'si ayarlanmış olarak etkinleştirildiğinden 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ığı gibi özel URL şemasını ekleyin.

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

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

Web'de GitHub SDK, Firebase konsolunda sağlanan GitHub uygulama ayrıntılarını kullanarak kimlik doğrulama akışını otomatik olarak işlemek için destek sağlar. Firebase konsolundaki geri arama URL'sinin, geliştirici konsolundaki GitHub uygulamanıza bir geri arama URL'si olarak eklendiğinden emin olun.

Örneğin:

Bir GitHub sağlayıcısı oluşturun ve signInWithPopup yönteminin kimlik bilgilerini sağlayın. Bu, kullanıcının GitHub uygulamanızda oturum açmasını isteyen yeni bir pencereyi tetikler:

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

Bir API Anahtarı ve API Gizli Anahtarı seti ile Firebase Konsolunda "Yahoo" oturum açma sağlayıcısının etkinleştirildiğinden emin olun. Ayrıca Firebase OAuth yönlendirme URI'nizin (ör. my-app-12345.firebaseapp.com/__/auth/handler) uygulamanızın Yahoo Developer Network yapılandırmasında bir yönlendirme URI'si olarak ayarlandığından emin olun.

iOS+

Başlamadan önce, iOS için Yahoo Login'i yapılandırın ve Runner'ınıza özel URL şemalarını ekleyin (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.

Kutunun dışında çalışı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 belirtecini kullanma

Bir AuthProvider kullanarak, aşağıdaki isteği yaparak sağlayıcıyla ilişkili erişim belirtecini alabilirsiniz.

final appleProvider = AppleAuthProvider();

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

// You can send requests with the `accessToken`

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

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

nihai appleProvider = AppleAuthProvider();

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

// Ayrıca linkWithRedirect kullanabilirsiniz } else { wait FirebaseAuth.instance.currentUser?.linkWithProvider(appleProvider); }

// Anonim kullanıcınız artık Apple ile Giriş Yap ``` ile bağlanabilecek şekilde yükseltildi

Sağlayıcıyla yeniden kimlik doğrulaması yapın

Aynı model, yakın zamanda oturum açmayı gerektiren hassas işlemler için yeni kimlik bilgilerini almak için kullanılabilen reauthenticateWithProvider ile kullanılabilir.

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