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 hesaba bağlamanıza 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 aktarılabilecek bir kimlik bilgisi oluşturmayı destekler. Alternatif olarak web platformlarında kimlik doğrulama sürecini bir açılır pencere veya yönlendirme yoluyla tetikleyebilirsiniz.

Google

Firebase ile Google Oturum Açma kullanılırken çoğu yapılandırma zaten ayarlanmıştır, ancak makinenizin SHA1 anahtarının Android ile kullanılmak üzere yapılandırıldığından emin olmanız gerekir. Anahtarın nasıl oluşturulacağını kimlik 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 Google'da oturum açarsa, bir hesabı manuel olarak kaydettikten sonra, Firebase Authentications'ın güvenilir sağlayıcılar konsepti nedeniyle kimlik doğrulama sağlayıcısı otomatik olarak Google olarak değişecektir. Bununla ilgili daha fazla bilgiyi burada bulabilirsiniz.

iOS+ ve Android

Yerel platformlarda kimlik doğrulama akışını tetiklemek için 3. taraf bir kitaplık gerekir.

Resmi google_sign_in eklentisini yükleyin.

Kurulduktan 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 yönetilmesine yönelik destek sağlar. Örneğin:

Kullanıcıdan almak istediğiniz ek izin kapsamını sağlayan bir Google kimlik doğrulama 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öntemine kimlik bilgilerini sağlayın. Bu, kullanıcının projenizde oturum açmasını isteyen yeni bir pencerenin görüntülenmesini tetikleyecektir. Alternatif olarak, kimlik doğrulama işlemini 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 Play Oyunlar

Play Oyunlar Oturum Açma'yı kullanarak Android oyununuzdaki kullanıcıların kimliğini doğrulayabilirsiniz.

Android

Android'de Google kurulumuna ilişkin talimatları izleyin, 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 izleyin.

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

iOS+ ve Android

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

flutter_facebook_auth eklentisini yükleyin.

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 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'de Firebase SDK, Firebase konsolunda sağlanan Facebook uygulama ayrıntılarını kullanarak kimlik doğrulama akışının otomatik olarak yönetilmesine yönelik 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 konsolundaki OAuth yönlendirme URI'sinin, Facebook Uygulamanıza 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öntemine kimlik bilgilerini sağlayın. Bu, kullanıcının Facebook uygulamanızda oturum açmasını isteyen yeni bir pencerenin görüntülenmesini 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

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

Apple kimlik doğrulama belirteçlerini iptal edin

Apple platformlarında Apple ile oturum açma, revokeTokenWithAuthorizationCode() API'sini kullanarak Apple kimlik doğrulama belirtecini iptal etmek için kullanılabilecek bir yetkilendirme kodu döndürür.

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

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

heyecan

Firebase Konsolunda "Twitter" oturum açma sağlayıcısının bir API Anahtarı ve API Sırrı seti ile 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ırmasındaki uygulamanızın ayarlar sayfasında Yetkilendirme geri çağırma URL'niz olarak ayarlandığından emin olun.

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

iOS+

Ö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 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 Kimlik Doğrulaması 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 etkinleştirildiğinden, İstemci Kimliği ve Sırrı ayarlandığından ve GitHub uygulamasında geri arama URL'si 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'de GitHub SDK, Firebase konsolunda sağlanan GitHub uygulama ayrıntılarını kullanarak kimlik doğrulama akışının otomatik olarak işlenmesine yönelik destek sağlar. Firebase konsolundaki geri arama URL'sinin, geliştirici konsolundaki GitHub uygulamanıza geri arama URL'si olarak eklendiğinden emin olun.

Örneğin:

GitHub sağlayıcısı oluşturun ve kimlik bilgilerini signInWithPopup yöntemine sağlayın. Bu, kullanıcının GitHub uygulamanızda oturum açmasını isteyen yeni bir pencerenin görüntülenmesini tetikleyecektir:

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 Konsolunda "Yahoo" oturum açma sağlayıcısının bir API Anahtarı ve API Sırrı kümesiyle etkinleştirildiğinden emin olun. Ayrıca Firebase OAuth yönlendirme URI'nizin (örn. my-app-12345.firebaseapp.com/__/auth/handler) uygulamanızın Yahoo Geliştirici Ağı yapılandırmasında yönlendirme URI'si olarak ayarlandığından emin olun.

iOS+

Başlamadan önce, iOS için Yahoo Login'i yapılandırın ve özel URL şemalarını Runner'ınıza ekleyin (1. adım) .

Android

Başlamadan önce Android için Yahoo Girişini 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 jetonunu kullanma

AuthProvider kullanarak aşağıdaki istekte bulunarak 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`

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

final appleProvider = AppleAuthProvider();

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

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

// Anonim kullanıcınız artık Apple ile Giriş Yap ``` ile bağlantı kurabilecek ş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 bilgileri almak amacıyla kullanılabilecek reauthenticateWithProvider ile birlikte 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