JavaScript'te Twitter Kullanarak Kimlik Doğrulama

Kullanıcılarınızın Twitter hesaplarını kullanarak Firebase ile kimlik doğrulamasına izin verebilirsiniz uygulamanıza Twitter kimlik doğrulamasını entegre ederek. Twitter'ı entegre edebilirsiniz kullanarak oturum açma akışını gerçekleştirmek için Firebase SDK'sını kullanıp veya Twitter OAuth akışını manuel olarak gerçekleştirerek ve sonucunda ulaşılan sonucu erişim jetonu ve Firebase gizli anahtarı.

Başlamadan önce

  1. Firebase'i JavaScript projenize ekleyin.
  2. Firebase konsolunda Auth bölümünü açın.
  3. Oturum açma yöntemi sekmesinde, Twitter sağlayıcısını etkinleştirin.
  4. Söz konusu sağlayıcının geliştirici konsolundan API anahtarını ve API gizli anahtarını sağlayıcı yapılandırması:
    1. Uygulamanızı kaydetme bir geliştirici uygulaması olarak Twitter'da yükleyin ve uygulamanızın OAuth API anahtarını alın ve API gizli anahtarı.
    2. Firebase OAuth yönlendirme URI'nizin (ör. my-app-12345.firebaseapp.com/__/auth/handler) emin olun uygulamanızın ayarlar sayfasında Yetkilendirme geri çağırma URL'niz olarak Twitter uygulamasının yapılandırması.
  5. Kaydet'i tıklayın.

Oturum açma akışını Firebase SDK'sı ile yönetme

Bir web uygulaması oluşturuyorsanız kullanıcılarınızın kimliğini doğrulamanın en kolay yolu oturum açma akışını yönetmek için harika bir platform. Firebase JavaScript SDK'sı. (Node.js'de bir kullanıcının kimliğini doğrulamak istiyorsanız veya tarayıcı harici başka bir ortam kullanıyorsanız oturum açma akışını manuel olarak gerçekleştirmeniz gerekir.)

Oturum açma akışını Firebase JavaScript SDK ile yönetmek için şu adımları uygulayın: için şu adımları izleyin:

  1. Twitter sağlayıcı nesnesinin bir örneğini oluşturun:

    Web

    import { TwitterAuthProvider } from "firebase/auth";
    
    const provider = new TwitterAuthProvider();

    Web

    var provider = new firebase.auth.TwitterAuthProvider();
  2. İsteğe bağlı: Sağlayıcının OAuth akışını kullanıcının tercih ettiği şekilde yerelleştirmek için dil ayarını, ilgili özel OAuth parametrelerini açıkça iletmeden kullanılan bir dil kullanıyorsanız kodunu ekleyin. Örneğin:

    Web

    import { getAuth } from "firebase/auth";
    
    const auth = getAuth();
    auth.languageCode = 'it';
    // To apply the default browser preference instead of explicitly setting it.
    // auth.useDeviceLanguage();

    Web

    firebase.auth().languageCode = 'it';
    // To apply the default browser preference instead of explicitly setting it.
    // firebase.auth().useDeviceLanguage();
  3. İsteğe bağlı: Ek özel OAuth sağlayıcı parametreleri belirtin onay kutusunu işaretleyin. Özel parametre eklemek için şu çağrıyı yapın: Başlatılan sağlayıcıda, anahtarı içeren bir nesneyle birlikte setCustomParameters OAuth sağlayıcı dokümanlarında ve ilgili değerde belirtildiği şekilde olmalıdır. Örneğin:

    Web

    provider.setCustomParameters({
      'lang': 'es'
    });

    Web

    provider.setCustomParameters({
      'lang': 'es'
    });
    Ayrılmış zorunlu OAuth parametrelerine izin verilmez ve bu parametreler yoksayılır. Bkz. kimlik doğrulama sağlayıcı referansı bölümünde daha fazla bilgi edinebilirsiniz.
  4. Twitter sağlayıcı nesnesini kullanarak Firebase ile kimlik doğrulayın. Şunları yapabilirsiniz: bir oturum açma sayfasına yönlendirilirsiniz. Yönlendirme yöntemi mobil cihazlarda tercih edilir.
    • Pop-up pencereyle oturum açmak için signInWithPopup numaralı telefonu arayın:

      Web

      import { getAuth, signInWithPopup, TwitterAuthProvider } from "firebase/auth";
      
      const auth = getAuth();
      signInWithPopup(auth, provider)
        .then((result) => {
          // This gives you a the Twitter OAuth 1.0 Access Token and Secret.
          // You can use these server side with your app's credentials to access the Twitter API.
          const credential = TwitterAuthProvider.credentialFromResult(result);
          const token = credential.accessToken;
          const secret = credential.secret;
      
          // The signed-in user info.
          const user = result.user;
          // IdP data available using getAdditionalUserInfo(result)
          // ...
        }).catch((error) => {
          // Handle Errors here.
          const errorCode = error.code;
          const errorMessage = error.message;
          // The email of the user's account used.
          const email = error.customData.email;
          // The AuthCredential type that was used.
          const credential = TwitterAuthProvider.credentialFromError(error);
          // ...
        });

      Web

      firebase
        .auth()
        .signInWithPopup(provider)
        .then((result) => {
          /** @type {firebase.auth.OAuthCredential} */
          var credential = result.credential;
      
          // This gives you a the Twitter OAuth 1.0 Access Token and Secret.
          // You can use these server side with your app's credentials to access the Twitter API.
          var token = credential.accessToken;
          var secret = credential.secret;
      
          // The signed-in user info.
          var user = result.user;
          // IdP data available in result.additionalUserInfo.profile.
            // ...
        }).catch((error) => {
          // Handle Errors here.
          var errorCode = error.code;
          var errorMessage = error.message;
          // The email of the user's account used.
          var email = error.email;
          // The firebase.auth.AuthCredential type that was used.
          var credential = error.credential;
          // ...
        });
      Ayrıca, Twitter API'leri aracılığıyla ek veriler getirmek için kullanabileceğiniz Twitter sağlayıcısının OAuth jetonunu alabileceğinizi de unutmayın.

      Ayrıca, hataları yakalayıp işleyebilirsiniz. Hata kodlarının listesi için Kimlik Doğrulama Referans Belgeleri'ne göz atın.

    • Oturum açma sayfasına yönlendirerek oturum açmak için signInWithRedirect çağırın: "signInWithRedirect" özelliğini kullanırken en iyi uygulamaları izleyin.

      Web

      import { getAuth, signInWithRedirect } from "firebase/auth";
      
      const auth = getAuth();
      signInWithRedirect(auth, provider);

      Web

      firebase.auth().signInWithRedirect(provider);
      Ardından, şu numarayı arayarak Twitter sağlayıcısının OAuth jetonunu alabilirsiniz: Sayfanız yüklendiğinde getRedirectResult:

      Web

      import { getAuth, getRedirectResult, TwitterAuthProvider } from "firebase/auth";
      
      const auth = getAuth();
      getRedirectResult(auth)
        .then((result) => {
          // This gives you a the Twitter OAuth 1.0 Access Token and Secret.
          // You can use these server side with your app's credentials to access the Twitter API.
          const credential = TwitterAuthProvider.credentialFromResult(result);
          const token = credential.accessToken;
          const secret = credential.secret;
          // ...
      
          // The signed-in user info.
          const user = result.user;
          // IdP data available using getAdditionalUserInfo(result)
          // ...
        }).catch((error) => {
          // Handle Errors here.
          const errorCode = error.code;
          const errorMessage = error.message;
          // The email of the user's account used.
          const email = error.customData.email;
          // The AuthCredential type that was used.
          const credential = TwitterAuthProvider.credentialFromError(error);
          // ...
        });

      Web

      firebase.auth()
        .getRedirectResult()
        .then((result) => {
          if (result.credential) {
            /** @type {firebase.auth.OAuthCredential} */
            var credential = result.credential;
      
            // This gives you a the Twitter OAuth 1.0 Access Token and Secret.
            // You can use these server side with your app's credentials to access the Twitter API.
            var token = credential.accessToken;
            var secret = credential.secret;
            // ...
          }
      
          // The signed-in user info.
          var user = result.user;
          // IdP data available in result.additionalUserInfo.profile.
            // ...
        }).catch((error) => {
          // Handle Errors here.
          var errorCode = error.code;
          var errorMessage = error.message;
          // The email of the user's account used.
          var email = error.email;
          // The firebase.auth.AuthCredential type that was used.
          var credential = error.credential;
          // ...
        });
      Ayrıca, hataları yakalayıp işleyebilirsiniz. Hata kodlarının listesi için Kimlik Doğrulama Referans Belgeleri'ne göz atın.

Oturum açma akışını manuel olarak yönetme

Ayrıca bir Twitter hesabı kullanarak Firebase ile kimlik doğrulamak için Twitter OAuth uç noktalarını çağırarak oturum açma akışı:

  1. Şu adımları izleyerek Twitter kimlik doğrulamasını uygulamanıza entegre edin: kontrol edin. Twitter oturum açma akışının sonunda OAuth erişim jetonu ve OAuth gizli anahtarı alacak.
  2. Bir Node.js uygulamasında oturum açmanız gerekiyorsa OAuth erişimini gönderin jetonu ile birlikte Node.js uygulamasına OAuth sırrını ekleyin.
  3. Kullanıcı Twitter ile başarıyla oturum açtıktan sonra OAuth erişimi değişimi yapın Firebase kimlik bilgisi için jeton ve OAuth sırrı:
    var credential = firebase.auth.TwitterAuthProvider.credential(token, secret);
    
    .
  4. Firebase kimlik bilgilerini kullanarak Firebase ile kimlik doğrulayın:

    Web

    import { getAuth, signInWithCredential, FacebookAuthProvider } from "firebase/auth";
    
    // Sign in with the credential from the Facebook user.
    const auth = getAuth();
    signInWithCredential(auth, credential)
      .then((result) => {
        // Signed in 
        const credential = FacebookAuthProvider.credentialFromResult(result);
      })
      .catch((error) => {
        // Handle Errors here.
        const errorCode = error.code;
        const errorMessage = error.message;
        // The email of the user's account used.
        const email = error.customData.email;
        // The AuthCredential type that was used.
        const credential = FacebookAuthProvider.credentialFromError(error);
        // ...
      });

    Web

    // Sign in with the credential from the Facebook user.
    firebase.auth().signInWithCredential(credential)
      .then((result) => {
        // Signed in       
        var credential = result.credential;
        // ...
      })
      .catch((error) => {
        // Handle Errors here.
        var errorCode = error.code;
        var errorMessage = error.message;
        // The email of the user's account used.
        var email = error.email;
        // The firebase.auth.AuthCredential type that was used.
        var credential = error.credential;
        // ...
      });

Chrome uzantılarında Firebase ile kimlik doğrulama

Bir Chrome uzantı uygulaması oluşturuyorsanız daha fazla bilgi için Ekran dışı dokümanlar rehberi.

Sonraki adımlar

Kullanıcı ilk kez oturum açtığında yeni bir kullanıcı hesabı oluşturulur ve bilgileri (kullanıcı adı ve şifre, telefon numarası) Numara veya kimlik doğrulama sağlayıcı bilgileri (oturum açan kullanıcı). Bu yeni Firebase projenizin bir parçası olarak saklanır ve aşağıdaki verileri tanımlamak için kullanılabilir: nasıl oturum açarsa açsın, projenizdeki tüm uygulamalarda kullanılır.

  • Uygulamalarınızda, kullanıcınızın kimlik doğrulama durumunu öğrenmenin önerilen yolu Auth nesnesine bir gözlemci ayarlayın. Ardından, kullanıcının User nesnesindeki temel profil bilgilerini içerir. Görüntüleyin Kullanıcıları Yönetme

  • Firebase Realtime Database ve Cloud Storage içinde Güvenlik Kuralları'nı kullanarak şunları yapabilirsiniz: auth değişkeninden, oturum açmış kullanıcının benzersiz kullanıcı kimliğini alabilirsiniz. ve kullanıcının hangi verilere erişebileceğini kontrol etmek için kullanılır.

Kullanıcıların çoklu kimlik doğrulama kullanarak uygulamanızda oturum açmasına izin verebilirsiniz yetkilendirme sağlayıcısının kimlik bilgilerini hesaba katılmaz.

Bir kullanıcının oturumunu kapatmak için numaralı telefonu arayın signOut:

Web

import { getAuth, signOut } from "firebase/auth";

const auth = getAuth();
signOut(auth).then(() => {
  // Sign-out successful.
}).catch((error) => {
  // An error happened.
});

Web

firebase.auth().signOut().then(() => {
  // Sign-out successful.
}).catch((error) => {
  // An error happened.
});