با Firebase JS SDK، می توانید به کاربران Firebase خود اجازه دهید با استفاده از هر ارائه دهنده OAuth پشتیبانی شده در محیط Cordova احراز هویت کنند. میتوانید هر ارائهدهنده OAuth پشتیبانیشده را با استفاده از Firebase SDK برای انجام جریان ورود به سیستم، یا با انجام دستی جریان OAuth و ارسال اعتبار OAuth حاصل به Firebase، ادغام کنید.
احراز هویت Firebase را برای Cordova تنظیم کنید
Firebase را به پروژه جاوا اسکریپت خود اضافه کنید . هنگام اضافه کردن قطعه Firebase، به متغیر پیکربندی
authDomain
توجه داشته باشید که باید شبیهmy-app.firebaseapp.com
باشد. اگر یک دامنه سفارشی به جای دامنه Firebase ارائه شدهfirebaseapp.com
استفاده می شود، دامنه سفارشی باید به جای آن استفاده شود.برای راه اندازی یک برنامه اندروید، برنامه اندروید خود را به کنسول Firebase اضافه کنید و جزئیات برنامه خود را وارد کنید. شما به google-services.json تولید شده نیاز ندارید.
برای راه اندازی یک برنامه iOS، یک برنامه iOS ایجاد کنید و آن را به کنسول Firebase اضافه کنید. هنگام نصب افزونه طرح URL سفارشی، به شناسه بسته iOS نیاز دارید تا بعداً اضافه کنید.
فعال کردن Firebase Dynamic Links:
- در کنسول Firebase ، بخش Dynamic Links را باز کنید.
اگر هنوز شرایط Dynamic Links را نپذیرفته اید و دامنه Dynamic Links ایجاد نکرده اید، اکنون این کار را انجام دهید.
اگر قبلاً یک دامنه Dynamic Links ایجاد کردهاید، به آن توجه داشته باشید. یک دامنه Dynamic Links معمولاً مانند مثال زیر است:
example.page.link
هنگامی که برنامه Apple یا Android خود را برای رهگیری پیوند ورودی پیکربندی می کنید، به این مقدار نیاز خواهید داشت.
Google Sign-In را در کنسول Firebase فعال کنید:
- در کنسول Firebase ، بخش Auth را باز کنید.
- در برگه روش ورود به سیستم ، روش ورود به سیستم Google را فعال کنید و روی ذخیره کلیک کنید.
پلاگین های مورد نیاز را در پروژه Cordova خود نصب کنید.
# 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
پیکربندی زیر را به فایل Cordova
config.xml
خود اضافه کنید، جایی کهAUTH_DOMAIN
دامنه مرحله (1) وDYNAMIC_LINK_DOMAIN
دامنه مرحله (3c) است.<universal-links> <host name="DYNAMIC_LINK_DOMAIN" scheme="https" /> <host name="AUTH_DOMAIN" scheme="https"> <path url="/__/auth/callback"/> </host> </universal-links>
یک پیکربندی نمونه ممکن است به این صورت باشد:
<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
استفاده می شود،my-app.firebaseapp.com
جایگزین آن کنید.برای برنامه اندروید باید از
singleTask
برایlaunchMode
استفاده شود.<preference name="AndroidLaunchMode" value="singleTask" />
جریان ورود به سیستم را با Firebase SDK مدیریت کنید
Firebase Auth برای تعیین صحیح محیط فعلی Cordova به رویداد
deviceReady
بستگی دارد. اطمینان حاصل کنید که نمونه برنامه Firebase پس از شروع آن رویداد مقداردهی اولیه شده است.یک نمونه از شی ارائه دهنده Google ایجاد کنید:
Web
import { GoogleAuthProvider } from "firebase/auth/cordova"; const provider = new GoogleAuthProvider();
Web
var provider = new firebase.auth.GoogleAuthProvider();
با Firebase با استفاده از شی ارائه دهنده Google با استفاده از
signInWithRedirect
احراز هویت کنید. توجه داشته باشید کهsignInWithPopup
در Cordova پشتیبانی نمی شود.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; });
برای رسیدگی به مواردی که فعالیت برنامه قبل از تکمیل عملیات ورود به سیستم از بین میرود، هنگام بارگیری برنامهتان با
getRedirectResult
تماس بگیرید.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; });
از همین مکانیسم می توان برای پیوند دادن یک ارائه دهنده جدید از طریق
linkWithRedirect
یا برای احراز هویت مجدد با ارائه دهنده موجود با استفاده ازreauthenticateWithRedirect
استفاده کرد.