Firebase JS SDK sayesinde Firebase kullanıcılarınızın desteklenen OAuth sağlayıcıyı kullanmaya devam edebilirsiniz. Web sitemiz g.co/newsinitiative/labs üzerinden aşağıdaki işlemleri gerçekleştirmek için Firebase SDK'sını kullanarak, desteklenen herhangi bir OAuth sağlayıcısını yaparak veya OAuth akışını manuel olarak gerçekleştirip gerekli güncellemeleri Firebase için OAuth kimlik bilgisi.
Cordova için Firebase Authentication'ı ayarlama
Firebase'i JavaScript projenize ekleyin. Bu Firebase snippet'i için
authDomain
yapılandırma değişkenini not edin. Bu değermy-app.firebaseapp.com
şeklinde görünmelidir. Özel alan kullanılıyorsa Firebase tarafından sağlananfirebaseapp.com
alanı yerine alan adı kullanılmalıdır.Android uygulaması kurmak için Android uygulamanızı Firebase konsoluna ekleyin ve uygulamanızın ayrıntılarını girin. Oluşturulan google-services.json olarak değiştirin.
iOS uygulaması kurmak için bir iOS uygulaması oluşturun ve Firebase konsolu. Aşağıdaki durumlarda daha sonra ekleyeceğiniz iOS paket kimliğine ihtiyacınız olacaktır: özel URL şeması eklentisini yükleyin.
Firebase Dynamic Links'i etkinleştirin:
- Firebase konsolunda Dynamic Links bölümünü açın.
-
Dynamic Links şartlarını henüz kabul etmediyseniz ve Dynamic Links oluşturduysanız kullanıyorsanız bunu hemen yapın.
Daha önce Dynamic Links alanı oluşturduysanız bunu not edin. Dynamic Links alan genellikle aşağıdaki örnekteki gibi görünür:
example.page.link
Apple veya Android uygulamanızı aşağıdaki amaçlarla yapılandırırken bu değere ihtiyacınız olacaktır: izlemesi için bir istek oluşturur.
Firebase konsolunda Google ile Oturum Açma özelliğini etkinleştirin:
- Firebase konsolunda Auth bölümünü açın.
- Oturum açma yöntemi sekmesinde, Google ile oturum açma yöntemini etkinleştirin ve Kaydet'i tıklayın.
Cordova projenize gerekli eklentileri yükleyin.
# Plugin to pass application build info (app name, ID, etc) to the OAuth widget. cordova plugin add cordova-plugin-buildinfo --save # Plugin to handle Universal Links (Android app link redirects) cordova plugin add cordova-universal-links-plugin-fix --save # Plugin to handle opening secure browser views on iOS/Android mobile devices cordova plugin add cordova-plugin-browsertab --save # Plugin to handle opening a browser view in older versions of iOS and Android cordova plugin add cordova-plugin-inappbrowser --save # Plugin to handle deep linking through Custom Scheme for iOS # Substitute *com.firebase.cordova* with the iOS bundle ID of your app. cordova plugin add cordova-plugin-customurlscheme --variable \ URL_SCHEME=com.firebase.cordova --save
Aşağıdaki yapılandırmayı Cordova
config.xml
dosyanıza ekleyin. Burada,AUTH_DOMAIN
, 1. adımdaki alan adı,DYNAMIC_LINK_DOMAIN
ise alan adını girmeniz gerekir.<universal-links> <host name="DYNAMIC_LINK_DOMAIN" scheme="https" /> <host name="AUTH_DOMAIN" scheme="https"> <path url="/__/auth/callback"/> </host> </universal-links>
Örnek bir yapılandırma aşağıdaki gibi görünebilir:
<universal-links> <host name="example.page.link" scheme="https" /> <host name="example-app.firebaseapp.com" scheme="https"> <path url="/__/auth/callback"/> </host> </universal-links>
auth.custom.domain.com
özel alan adı kullanılıyorsa şunu değiştirin:my-app.firebaseapp.com
kazanmıştınız.Android uygulamasında
launchMode
içinsingleTask
kullanılmalıdır.<preference name="AndroidLaunchMode" value="singleTask" />
Oturum açma akışını Firebase SDK'sı ile yönetme
Firebase Auth, şu işlemi yapmak için
deviceReady
etkinliğine bağlıdır: Cordova ortamını doğru şekilde değiştirmeniz gerekir. Firebase uygulaması örneğinin doğru olduğundan emin olun. o etkinlik tetiklendikten sonra başlatılır.Google provider nesnesinin bir örneğini oluşturun:
Web
import { GoogleAuthProvider } from "firebase/auth/cordova"; const provider = new GoogleAuthProvider();
Web
var provider = new firebase.auth.GoogleAuthProvider();
Google sağlayıcı nesnesini kullanarak Firebase ile kimlik doğrulama
signInWithRedirect
signInWithPopup
özelliğinin Cordova'da desteklenmez.Web
import { getAuth, signInWithRedirect, getRedirectResult, GoogleAuthProvider } from "firebase/auth/cordova"; const auth = getAuth(); signInWithRedirect(auth, new GoogleAuthProvider()) .then(() => { return getRedirectResult(auth); }) .then((result) => { const credential = GoogleAuthProvider.credentialFromResult(result); // This gives you a Google Access Token. // You can use it to access the Google API. const token = credential.accessToken; // The signed-in user info. const user = result.user; // ... }).catch((error) => { // Handle Errors here. const errorCode = error.code; const errorMessage = error.message; });
Web
firebase.auth().signInWithRedirect(provider).then(() => { return firebase.auth().getRedirectResult(); }).then((result) => { /** @type {firebase.auth.OAuthCredential} */ var credential = result.credential; // This gives you a Google Access Token. // You can use it to access the Google API. var token = credential.accessToken; // The signed-in user info. var user = result.user; // ... }).catch((error) => { // Handle Errors here. var errorCode = error.code; var errorMessage = error.message; });
Oturum açılmadan önce uygulama etkinliğinin silindiği durumları ele almak için işlem tamamlandı, uygulamanız olduğunda
getRedirectResult
numarasını arayın yükler.Web
import { getAuth, getRedirectResult, GoogleAuthProvider } from "firebase/auth/cordova"; const auth = getAuth(); getRedirectResult(auth) .then((result) => { const credential = GoogleAuthProvider.credentialFromResult(result); if (credential) { // This gives you a Google Access Token. // You can use it to access the Google API. const token = credential.accessToken; // The signed-in user info. const user = result.user; // ... } }) .catch((error) => { // Handle Errors here. const errorCode = error.code; const errorMessage = error.message; });
Web
firebase.auth().getRedirectResult().then((result) => { if (result.credential) { /** @type {firebase.auth.OAuthCredential} */ var credential = result.credential; // This gives you a Google Access Token. // You can use it to access the Google API. var token = credential.accessToken; // The signed-in user info. var user = result.user; // ... } }).catch((error) => { // Handle Errors here. var errorCode = error.code; var errorMessage = error.message; });
Aynı mekanizma üzerinden yeni bir sağlayıcı bağlamak için de kullanılabilir.
linkWithRedirect
veya mevcut bir sağlayıcıyla yeniden kimlik doğrulamak içinreauthenticateWithRedirect
kullanılıyor.