From 628173c2dbd003e87f7e52873d0b166f85537569 Mon Sep 17 00:00:00 2001 From: Swee Kwang <39427814+Sweekwang@users.noreply.github.com> Date: Sun, 4 Sep 2022 19:04:30 +0800 Subject: [PATCH 1/8] Update README.md --- README.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 038fc06..8bfbbbd 100644 --- a/README.md +++ b/README.md @@ -4,10 +4,12 @@ This repo provide you with the complete setup of Firebase google sign in with Sw ## What will you be building You will be building the functionality to login use Goole. Below is the screen. +
+
+
+
+
>G7wjDTqy0%{Q{2*`-o)GSsbVzWY$A>w4Q zUP}^jib9etig;5M@wWaCFUPm7t{EaWIa|b;;w%w&=68tLj))yCBDN>7{Y~urVt9#5 z#bzCV%M<{2{rd*3l_!2JZczYSEv^yQitEJn;y3gsaijRHxJlfMh~0?TgNVI|*oUwO zO&rjgJNO-k5b+}-ep)APZ3S=#2Jm|=fV&j{54Z6LCr0pBouyBl)&kg9Jf;Bn3nG4Q zqYw_A{2%eSHjyugzbWuxjE**o7@uR>F(&>YUQ-BkMIjJgX|SB}#RP)NiY7e9?8V#S zeFdmH;$86`B2FOUBqC1z4`WAsF5)Q=uW}S$C?K7|Ahj8cxE?R@z4!^o_Qen4M?{=M z#D(RON&*P4Y9j7`k@b;iZ48t+kAt~u{td25g6{IKqx2VQ7njL)?MAgqCh18=D(BTw zJ4s(^FLjVQN(NFV$q*4($V-U8%IPv9{y@YPL|jG0wbhcbWFnbLW|FyNAz4aRh`@U1 zIwG*%!7aaqh}(#`i->!gUz*G{35~LzsM^fwsL55%CBS zj}d|GjVFkBx>|~qqNIViy)ja(6enSo@(dBr5%IUSz1Ze>iHNs|c!%3NLr)s dtiz(Zsl@%o8)v>7c8<_eTuZf7AYU} zZ utesRHv#!c)hGW(m(5A2lY^UD72a;h4%=sal#O)kw9{ zWT{S?BGpR`(o{sM5D5?o5lJ8t@A9M&Nh6X$B#TIHt<)q >&B4Qg zKkq!A*G5ox07J#&6 9Y5UKr3F)A881r5_B>gD; zgh(?)nj_Mpg})#jk-k-|M$!^jsIi{ ztj{P59Hh(Cq%AjReImk_we`tW={C+-;uroYU6+26Zc4YbueC#@J$^GH9T3@h6|4i^ z(mm-u@WzYwewVWm>4-=tydFGT<2rAd`i%4(*ZsHjLRod7EV V%F~uhuT(gNrk{|Xnp|$3Tx{LFM>ikq7+sJ}dWRK^s=W;V@e-v^dH|C~xz? US2N8&XzzKHZjqz``Qzl-{ctaX>YzRV!$Ip{8TQ!*?6 zst-M9-R16I=D~Q)<0Xb_ytVTJ4q-jO+d4mRkRv&o6F3QP=InsuH8I=>E{Ds*do&Ai zsH2oC<0jyE#Z(-on2rM!v$?t4d~PA$oq3<{h__UZ<}3Mm*yY*HpW@H(=lBc!Z~P^^ zIr0kL7 Z*I_)h}ByCEro5ja6@jyFH{#v2{8@aD!QVVST2Z(saDI4m5& z8yJt{y^E)X%fc1KL=tY|eT#RoZQ?BU#Pf9l-fuWroFX=ejd;J|JiOm<5#DO}mDnuq z5PuPGVFfE;)z}W}L{q$Z&>e3U48eLPRT_tP1C}boR+@-+12(Ji7}zHr=ty)FJNk4C z?3mW^Xvec1?{$3A@q+ 7k*Xp`)SN(=f=ek70kqc*7*a!G=Q(iwq|l&N2MPaG&92!z+f@46hsB zG`wwi*T~$+!N}dn)5y!Hn^AWoKcl`zF-A#7gN=q74L7Pasxz8lw9#m*(OIKwM%RsQ z8r?Sf%jl`mM`M*SG$xJP8+SDBWNc&{Y#eSJW1MI_(m36Cmhn8}1IEYH#+Qu$G=5+L zO$ZY^6HgOg6MvHclOU5mCjCspP5PTeniQKXFxhQ#&E%0OZOWSRrlP5yslI6kQv*{& zQ)5$8Q*%>GQ(sem(*V;T(_qt3)83|iO~XthOb3`onMRw&nvOOtGi@|oWxC(=vgvCx zBeTwCJ !aW{1q~nmsjp zX7;z)2Xo$BGH++z!Q8;y(7c;@sChs0aP$7=(dMz{@#cx PVdCT&S md`BzwtQ*%+VZWHXw}Ke+RE0-!^+dD ztChD^pjEI{s8w&P7^@LhqpXsx##pJ-tkSJAtxB!RtR`4Zv{GADTh&-iwwh_R(rTC0 z5v%i7FRWf!lh&NIU@cj9ur{zZv^KVOvktM2uuiZ}vL0+b)Ov*VXzLW~N!DLkAGAJi z{oIDJ>1fl{#@oin#@EK*Ccq}hCfFv_W~j|@n~^r7ZBlGfZN}Qnw`sOnZL`*9z1n7j z&9^qYZT8yiw>fBY-sV@En>M#??%Le9`DiQHO1AB6+uJ(WdfE204Y%!Y8)-Yx_J!?7 zI|DltI}bZQyWVzv?ZWIX+FiGMZ1>#mlf7tfU~g@2Yj1Dg+1|t6$G(Ssl0C9-uy3|s zWxw10iv2bF>-IP8Z` n&pynI|2g#wGLwkpg4(1LH4vr2^4lWLE4jvAH z4m}-09C|q iI%YfOI_5i0cAVna;Mk~k zoaQ*gahBt3$GML49Tz$-c3kSX%kh%q$1c`g`gF tyfb z=G5KEw~pi@t$5T{;F(N1wr2~LBYhBys#Ds!rJYH(_Fn&zZ&n&ULjX@S#9r>#!A zo%T5Gb2{ksi_=A?YfjglZaUp|dgSz%(^IGCPU;uVyt9*Ym~)JCtaH5cXy-KNbmvUx zJm&)ELg!-V3C{J-JDvA9Uv>V|`G)f?=R3~#oF6zpa{kMOb>Uq^7d;n!mkurlE*37G zUAnm7rF|~$E}kwyF2OFLF1=l1T;g03T#{VIxTLwHyJWhQx|F$0aH({e;j+Z#E0<=M z7ME|;E{9!?xEymi?sC%Qw98qS^De)-Ty*)} +*Y}*c3bPV-fe^1w{E-L z_PHH&`^oKy+cCGhZZF*4x_xl_ F({`-95-X#J!h$ANPLl z!`vsh&v$Qj-{8K*eVh9Z_ucM$-S@j6bU)+%-2J8dYxj5VA3anaga_@xdf0f_dpLSH zdANAEd3bpEc?5g(^62Xk?$O_4kjGGu5gwyFDm|(^rg}7aO!t`SvDBm4qs3#T$4-x* zJdSuA^Ej^dEb*-Ntnr-eS?@X5bDie~&rP0NJ-2&)@44G^pXWi(pFEFvUh(|X^M>aw z&pV#?Js)}g<@wa}Z_k&Wue)~Y+O6y0t`oX0?Ru!|T`$I~vsZ7gNUvzGIIje+5nf}x zGQ6_9a=h}q3cMzI$zGGZCVSO;P4!yswax2$uiajIy$*RD_EI15I_7oB>kqHnUeCQ= zd%gAg;0?V=Z^oPRHum=S4)pHn9qQf3yPtQs_W HW3$8t?tyC%jL4pYy)p{k!*F@B7{ly&rqO^ZwXP)eUwt>}J=k zbGI(toV#7_cCXumZjaR6o^<=*W8h=tW9nn!W9?(-)7i(#$JNKf$IHjZC( gai;`5+;yY4>SM|ZF3-qQU*_p9CSc7M?QarY ^sIc!&jZ{o9mnJTjh&< zr}@tDo$tHIcd746-_^creb@VL@IB~z-B0Dm`5F3|`C0f``#JbI`Z@c#`UUu9`xX0* z_nY8X=~wHw%&*07mEU2%BYwyHPWYYnJL`Ae?^nNze$V_~_`UXf>-XO8qrb|Z^Y7r_ z$=}%D%-_=A+TYFJ!@sM)x7t6%zn6a>|9<}Q{)zsB{D=6D_0ROr_RsZ4{?q(t_|Nj6 z?ceOb!+)3m9{>IRhx`xwAN4=(f6D)?{{{bx{!jd$`@isi<^RV2z5mA^pa;=|>cRHl zdx$-pdW84L=`pRx<{rNV5CM(>{Q}YgsspA5ObeJ9pb1zUurlE5fHeW@0@U9GYz+7z zU~j;IfFA>X4mcWcC*bdZHv#VgJ_ZtjR3H<`1sVrB1iA)#1bPMf1O^5M2Zjdr4(uB^ zG_X8yUf{C8Zvr<5ZVlWX_(R~Hz
@v9v(a@I5{{qcx-Tfa9!}M;Kjjff;R_m z3s&z4-W9wj_;B!%;A6qZgHHyZ4*n}d4DkpF4@nFe95O6qWJq$zn2_-ya!75+l#r<* zO(6?InnPMbR)%~XvLR$s$d-`rLUx4g4>=n0Ysi(5Ya!P|ZiYMvc^vX2E2rCLJ4J!|;3{!_yht-5F3fmF(W7y^J zcHuVRJ;P(dv%|~6CxuTAuMckwpB_Fdd`bAS@RsmZ;cLRzhi?e~BZ7$tjTjfPIATr2 zhKNlOTO-svBYue38?is)M8v6xGZE+e|J?t4|6luG?0 pGN*2`7ZKf6o?|D=qSgi@Tlyl z;;8Xa6QU}kW=1WHS`xJ^YI)SUsP$1BqJD}x8}(b%?@?ExZm6SfN8O8h5cN9hZPfdy zPXm_?{AS?BftvbarF4;n&`UdhUli~8PS^PxzY2Ze~x|~ z;}|nAW@60hn7uK-#2k+~5pyc$M$D6#r!miB{*L(&tBNIJsaV5U>sY(k&aqChuCd2s zFT~!6y&L-=_Hpd<*q5>DH?i;HU>p}`9_Jb7A2%d!betSFH?AdaMcm4`uj97H?T*_Q zcQEd!xFd0A;?BqY7WaGHmAGs1`tiZ>dGQP4zm5Mf{zUxg_;c|W;_t-YkAD>ZB>s8) z`vfjQFQI*cL4rwwd4g4fO@dQ`XF{KZVF?)tnF(15ISJ(n%M(^6tWH>`PS}vJDPe2E z_Jr>fb|>shIGFHL!jXhu5>6(ZPB@qFYr>^OB9Tty62-)Ji5(IN0*PT7+sa@n(Ut(kQ|g8l6*V)c?zE*rRb-0 zRHqoGn53AeSf$veIHYt*aY^Zw(l;e6B_d@&%D|M^l!TO|l))*(QbweVN~ug)l(IMF z&oR^(moZ6WCX87yX2+QGW3G((bIi>#x5xZ7=Jl9&V?L&WR5F!LWmEZ7G1Vm1Jk=`I zHq{~3F||)>Y-&>K;M8HMqf=9Gpd~%EG_^ccJvp^0bw;Wtb#CgC)Mcs5Q&*&}O5K%u zDfM+4NYhK}nAR!HIL#u>D$O>{KFvEVByCXI(6kY0qtnKujZMqMi-+^m3e!sPrsnBs zv(jd#%}tx1wkU0BT60=U+RC)mX=~HgryWVVJ60U)J~nP_+1Qq`hsWMdr_ycHUDDmt zyQX`q(*x7{riZ8ZPmfBEPLE9=nVy`Unx3AXm7bGcpFTHzQTo#KW$7!^SEsK{U!T4! zeNXza^fT$_(|=3 YR(;mgtod1svX*8w zXRXLum31)dRMz>d-?A=cUCp|lbu;UB){Csy*&tglyHmDtwpq4iwnMgKwo|riwtIGD zb~X;1G-c0HXV1=_m%TW9X?AmVOZMjMz1ioof6cy>{YUn->>Js)v+rd;%>FC;Sq_uK z=ZHCaIr=#ra}0Bgb4+tAa;$P}a(d>B$U!+RIfru|<+jiD%#F^?$t}q(%dN x2r39E=v~maAf+I`ptxXsL3u${0V Y2G zF4$VIy Ng_{bu z6mBcrUU;bRaN*Iy TGYMBuPC4>q^MU> z-=eUhq@poJ6N)Al$wiZjCKuHgH5N@TnpHHXXnxV6qRmCyinbT+EZSAHr)YoCp`xFP zel9vzbiC+f(Zgb)*rPaBU0hPUsCaMjmEsR2rX_YIolBfbTuQo?1eJu8^e*XF5>Yas zWN^u_l946JC8;H2OD2`fD4A0-uVi7#S0&9QD@s 2 zt>k*it5U<#Zlyt`{Y#@uV@nfChm;O09a%cMG{3a6R8u;)bV2Fj(yvOFm#SBmt}b0y zx}kJa>DJO?r6)>Hm7Xa*SNdz|rP4o2ua^E D}?vc>D3; aw?G@5?@xtI9i-cPo!8A6A}Go?D(@URXZ9 zyu7@!ysEsZd|~;<^3CPj%6F9SD&JGSzx+`7;qs&9$IGvm-zvXTey{vN`Q!4Z< R586`eZ|g-Jr(;a4p#hJajfD*#i@#`6%Q+(Ry?nGS@EvoV ;L6v!x<0^|PODe}#PN PJ2)>lrg zTwQs%^1(!DV%Ld-CRR*bIC1C13lpzSygu>P#5?MVPbR*Z_ UG9jjl?m8dp_SHL0q$YD!g8)%2=aRkN#Fs=lo{Ty?bS zc-5(@vsD+WE>>Nxx>|L;>Q>d=s!wXDCe^f>RSRl8b$fM3btkp4+Ei_>_E!&9SE`q) z52)35Wl?sK`^)M0-(nTXrE-~! *7uS~LsILkrMi)QnotDzqAH zM~Bew=nDE1-9&fLee_6;o}lOGC3=J2S9h#7tTwJTtv0W=s O^Y1O2SlQvJ Egu@2Ocb#$FwooAg-oo`)_y5PFdx;}ON z>JsY)*Cp5G)fLs1)RomutW(!j*VWW%>Xy}QtJ_hxt8P!-{<=eThwF~k9j`l8ced_s z-GjPEb$``8t^2#~Ro$DqcXc19sHVUvR#SRTNtseJW%ZO3Q=ZkgulKBvs!ysPQa`+2 zJ+eN%zM#ISzO=r)zOufmUaoJdpHZ)=pIg76eo_67`XB3$)*r7wS%0qn*ZPa~zt`Wd ze^mdr{!;^JARD*_p+T=fzrm`(wV`)IzlMm0$cE^KxQ4`r!41P2Mm8ijq&8GER5i#A z)eSWbbqx&-O${>|W;M)dnAfnN;k$ IJ z{-!HUAEwz%>pd-fTGO;m(@stMYx@6Fquu{xRRsVXS9A!4*-Qhct&(IG1d$kuQYMoC zk<@G~8V<#LF9c1?8IR#?r0F@&Irp4!D)nd+*qN0jIfq!51RRiV#$mif<&&$rKZO z!2l7fE!QvK??3U00HZ+^7z>^QF(3gXf=OU9NCs0uI>-ds;9W2uEC9uz6l?)oK{?m~ zAV5F?6<{x@21f$mdr$}JK?7(6CqXmlg2Ul>7z?MsRQML03EzQPFdOE;e7F(@U>V#B z%i(so69%CIRj5M&zk>&0H9QQD!dmzvJO+P(zro|M33dd-f^or|U`db#Yl4@8{U{Q> zfTB?hnuron3Q9#YP#OxPqYRXVa#0@2M+K-5eT2#oKnhZkh9t641#-}SRE>T{4X6>F zM5obNbRJzq9jFHn$4}#D@UwUf9*3XD 9GJOZ*eQri3Z+%6z3*fdOT=a!@&})F`z|z0$0lR$7z`N~>~NxuSF`ca(0WM|q$; zBvE7nd4 GFAXCXSl11i_JhF%^A DJ04N+s%Y;}za)IDmWdPY5`UQ}DvcC|~rtKL_8)qZt=g|i4Yf{kROStLthZ?klk z$!4>;>^=5A%VkU1TDFmW!8WrkY#ZCb01GnA`~a(G?d%@wWe?bZHdq^?g=%41r1p~b zvKFT$Xh~YKmZDA9GPT*-9Br=Fs}I#f^)UTO-PaH3zv>NolYUD7T|cXz*DvXp_1pSA z{V%;wf2jX$3^s-u!;Ekv+DI^F8u`X5qtt+gG(5vMs*HWce&e7KXffK1TSlkRW!y0y z@j-kD59ML}2|kX;@+o{OPvO&fCeP#fynq+-rF;cn&5L*m-@?D*U-NG`;D{5>xWNUl z=Er$E?-rpVO2mi+@tSyDOcT?^n_{6@C02`%MUmJf0-{W873E@^;KB(AU+faQ#kZnX zG>Rs1LYxw C?c#>GDf(oD93$gpqD+#>GDW7!88S_#%S@Rq7s(}ZnOq@P$xmdl zTqifkjdGJLmF3cuRq~i@k)39U8EGb%8RkNBjag $V+b zr`sj=I{Qnz+}>{Qw1YOY4O`l_U13+*`<%VbKBvw(;WRs^ofhYU)9SQ2x128Lj??Y* zIDJmPGZ1iJbkp56uI^U2yWIV5wOi-byG?GJd&B+H?R0Ou1MWZGU~i~5%nSEMdZWEa zZ;UtIi}ogX@m`uY%ggX)dpX`bZ-JNV<$3vDfw$Nz@`}B+-g-aApX5*Wll>IG!|(C? k{C@vY<*v#@l}9RTDu4Koe2pCx67tx7Jr(!(|F>%SzZgHLuK)l5 diff --git a/SignInUsingGoogle/SignInUsingGoogle/Helper/+View.swift b/SignInUsingGoogle/SignInUsingGoogle/Helper/+View.swift new file mode 100644 index 0000000..cc8c460 --- /dev/null +++ b/SignInUsingGoogle/SignInUsingGoogle/Helper/+View.swift @@ -0,0 +1,25 @@ +// +// +View.swift +// SignInUsingGoogle +// +// Created by Swee Kwang Chua on 12/5/22. +// + +import Foundation + +import SwiftUI + +extension View { + func getRootViewController() -> UIViewController { + guard let screen = UIApplication.shared.connectedScenes.first as? UIWindowScene else { + return .init() + } + + guard let root = screen.windows.first?.rootViewController else { + return .init() + } + + + return root + } +} diff --git a/SignInUsingGoogle/SignInUsingGoogle/Helper/AppDelegate.swift b/SignInUsingGoogle/SignInUsingGoogle/Helper/AppDelegate.swift new file mode 100644 index 0000000..7abd2f7 --- /dev/null +++ b/SignInUsingGoogle/SignInUsingGoogle/Helper/AppDelegate.swift @@ -0,0 +1,25 @@ +// +// AppDelegate.swift +// SignInUsingGoogle +// +// Created by Swee Kwang Chua on 12/5/22. +// + +import UIKit +import Firebase +import GoogleSignIn + +class AppDelegate: NSObject, UIApplicationDelegate { + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool { + // Initializetion code for firebase + FirebaseApp.configure() + return true + } + + @available(iOS 9.0, *) + func application(_ application: UIApplication, open url: URL, + options: [UIApplication.OpenURLOptionsKey: Any]) + -> Bool { + return GIDSignIn.sharedInstance.handle(url) + } +} diff --git a/SignInUsingGoogle/SignInUsingGoogle/Helper/FirebAuth.swift b/SignInUsingGoogle/SignInUsingGoogle/Helper/FirebAuth.swift new file mode 100644 index 0000000..a4a4cc2 --- /dev/null +++ b/SignInUsingGoogle/SignInUsingGoogle/Helper/FirebAuth.swift @@ -0,0 +1,53 @@ +// +// FirebAuth.swift +// SignInUsingGoogle +// +// Created by Swee Kwang Chua on 12/5/22. +// + +import Foundation +import FirebaseAuth +import GoogleSignIn +import Firebase + +struct FirebAuth { + static let share = FirebAuth() + + private init() {} + + func signinWithGoogle(presenting: UIViewController, + completion: @escaping (Error?) -> Void) { + guard let clientID = FirebaseApp.app()?.options.clientID else { return } + + // Create Google Sign In configuration object. + let config = GIDConfiguration(clientID: clientID) + + // Start the sign in flow! + GIDSignIn.sharedInstance.signIn(with: config, presenting: presenting) {user, error in + + if let error = error { + completion(error) + return + } + + guard + let authentication = user?.authentication, + let idToken = authentication.idToken + else { + return + } + + let credential = GoogleAuthProvider.credential(withIDToken: idToken, + accessToken: authentication.accessToken) + + Auth.auth().signIn(with: credential) { result, error in + guard error == nil else { + completion(error) + return + } + print("SIGN IN") + UserDefaults.standard.set(true, forKey: "signIn") // When this change to true, it will go to the home screen + } + } + } +} diff --git a/SignInUsingGoogle/SignInUsingGoogle/Screen/LoginScreen.swift b/SignInUsingGoogle/SignInUsingGoogle/Screen/LoginScreen.swift index 6e43e5c..4fd75a1 100644 --- a/SignInUsingGoogle/SignInUsingGoogle/Screen/LoginScreen.swift +++ b/SignInUsingGoogle/SignInUsingGoogle/Screen/LoginScreen.swift @@ -6,6 +6,9 @@ // import SwiftUI +import FirebaseAuth +import GoogleSignIn +import Firebase struct LoginScreen: View { @State var username: String = "" @@ -37,7 +40,9 @@ struct LoginScreen: View { GoogleSiginBtn { // TODO: - Call the sign method here - + FirebAuth.share.signinWithGoogle(presenting: getRootViewController()) { error in + // TODO: Handle ERROR + } } // GoogleSiginBtn } // VStack .padding(.top, 52) diff --git a/SignInUsingGoogle/SignInUsingGoogle/SignInUsingGoogleApp.swift b/SignInUsingGoogle/SignInUsingGoogle/SignInUsingGoogleApp.swift index 3724c23..79e9ab9 100644 --- a/SignInUsingGoogle/SignInUsingGoogle/SignInUsingGoogleApp.swift +++ b/SignInUsingGoogle/SignInUsingGoogle/SignInUsingGoogleApp.swift @@ -9,6 +9,7 @@ import SwiftUI @main struct SignInUsingGoogleApp: App { + @UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate @AppStorage("signIn") var isSignIn = false var body: some Scene { From f9000ed9ff4818c184770f882a377027c31ea55d Mon Sep 17 00:00:00 2001 From: Lorna0542 Date: Mon, 9 Sep 2024 20:09:32 -0600 Subject: [PATCH 3/8] feat: add complete project --- .../xcshareddata/swiftpm/Package.resolved | 82 ++++++++++-------- .../UserInterfaceState.xcuserstate | Bin 0 -> 40821 bytes .../xcschemes/xcschememanagement.plist | 14 +++ 3 files changed, 60 insertions(+), 36 deletions(-) create mode 100644 SignInUsingGoogle/SignInUsingGoogle.xcodeproj/project.xcworkspace/xcuserdata/alumno.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 SignInUsingGoogle/SignInUsingGoogle.xcodeproj/xcuserdata/alumno.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/SignInUsingGoogle/SignInUsingGoogle.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/SignInUsingGoogle/SignInUsingGoogle.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index c16c717..3993245 100644 --- a/SignInUsingGoogle/SignInUsingGoogle.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/SignInUsingGoogle/SignInUsingGoogle.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -1,30 +1,31 @@ { + "originHash" : "809767c578f1058ab5fea90c3e19b6cd2d1f9dd10190023753094a356e675446", "pins" : [ { - "identity" : "abseil-cpp-swiftpm", + "identity" : "abseil-cpp-binary", "kind" : "remoteSourceControl", - "location" : "https://github.com/firebase/abseil-cpp-SwiftPM.git", + "location" : "https://github.com/google/abseil-cpp-binary.git", "state" : { - "revision" : "d302de612e3d57c6f4afaf087da18fba8eac72a7", - "version" : "0.20220203.1" + "revision" : "194a6706acbd25e4ef639bcaddea16e8758a3e27", + "version" : "1.2024011602.0" } }, { - "identity" : "appauth-ios", + "identity" : "app-check", "kind" : "remoteSourceControl", - "location" : "https://github.com/openid/AppAuth-iOS.git", + "location" : "https://github.com/google/app-check.git", "state" : { - "revision" : "33660c271c961f8ce1084cc13f2ea8195e864f7d", - "version" : "1.5.0" + "revision" : "21fe1af9be463a359aaf8d96789ef73fc3760d09", + "version" : "11.0.1" } }, { - "identity" : "boringssl-swiftpm", + "identity" : "appauth-ios", "kind" : "remoteSourceControl", - "location" : "https://github.com/firebase/boringssl-SwiftPM.git", + "location" : "https://github.com/openid/AppAuth-iOS.git", "state" : { - "revision" : "79db6516894a932d0ddaff3b05b9da1e4f6c4069", - "version" : "0.9.0" + "revision" : "c89ed571ae140f8eb1142735e6e23d7bb8c34cb2", + "version" : "1.7.5" } }, { @@ -32,8 +33,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/firebase/firebase-ios-sdk", "state" : { - "revision" : "cfa854c9c1073c4d1b83b20dfcb1ef7ceb85388b", - "version" : "9.0.0" + "revision" : "9118aca998dbe2ceac45d64b21a91c6376928df7", + "version" : "11.1.0" } }, { @@ -41,8 +42,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/google/GoogleAppMeasurement.git", "state" : { - "revision" : "6a3123fab90f3884167990bee9bb30097d99c98c", - "version" : "9.0.0" + "revision" : "07a2f57d147d2bf368a0d2dcb5579ff082d9e44f", + "version" : "11.1.0" } }, { @@ -50,17 +51,17 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/google/GoogleDataTransport.git", "state" : { - "revision" : "b905c49326b72211531ed9d7baa02d724828a8dc", - "version" : "9.1.4" + "revision" : "617af071af9aa1d6a091d59a202910ac482128f9", + "version" : "10.1.0" } }, { "identity" : "googlesignin-ios", "kind" : "remoteSourceControl", - "location" : "https://github.com/google/GoogleSignIn-iOS", + "location" : "https://github.com/google/GoogleSignIn-iOS.git", "state" : { - "revision" : "60ca2bfd218ccb194a746a79b41d9d50eb7e3af0", - "version" : "6.1.0" + "revision" : "65fb3f1aa6ffbfdc79c4e22178a55cd91561f5e9", + "version" : "8.0.0" } }, { @@ -68,17 +69,17 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/google/GoogleUtilities.git", "state" : { - "revision" : "f4abe56ce62a779e64b525eb133c8fc2a84bbc1f", - "version" : "7.7.1" + "revision" : "53156c7ec267db846e6b64c9f4c4e31ba4cf75eb", + "version" : "8.0.2" } }, { - "identity" : "grpc-ios", + "identity" : "grpc-binary", "kind" : "remoteSourceControl", - "location" : "https://github.com/grpc/grpc-ios.git", + "location" : "https://github.com/google/grpc-binary.git", "state" : { - "revision" : "abd2d5a4347efa0454606a788678a5d8ec223738", - "version" : "1.44.0-grpc" + "revision" : "f56d8fc3162de9a498377c7b6cea43431f4f5083", + "version" : "1.65.1" } }, { @@ -86,8 +87,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/google/gtm-session-fetcher.git", "state" : { - "revision" : "4e9bbf2808b8fee444e84a48f5f3c12641987d3e", - "version" : "1.7.2" + "revision" : "a2ab612cb980066ee56d90d60d8462992c07f24b", + "version" : "3.5.0" } }, { @@ -95,8 +96,17 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/google/GTMAppAuth.git", "state" : { - "revision" : "b9d1683be336ba8c8d1c6867bafeb056a5399700", - "version" : "1.3.0" + "revision" : "5d7d66f647400952b1758b230e019b07c0b4b22a", + "version" : "4.1.1" + } + }, + { + "identity" : "interop-ios-for-google-sdks", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/interop-ios-for-google-sdks.git", + "state" : { + "revision" : "2d12673670417654f08f5f90fdd62926dc3a2648", + "version" : "100.0.0" } }, { @@ -113,8 +123,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/firebase/nanopb.git", "state" : { - "revision" : "7ee9ef9f627d85cbe1b8c4f49a3ed26eed216c77", - "version" : "2.30908.0" + "revision" : "b7e1104502eca3a213b46303391ca4d3bc8ddec1", + "version" : "2.30910.0" } }, { @@ -122,8 +132,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/google/promises.git", "state" : { - "revision" : "46c1e6b5ac09d8f82c991061c659f67e573d425d", - "version" : "2.1.0" + "revision" : "540318ecedd63d883069ae7f1ed811a2df00b6ac", + "version" : "2.4.0" } }, { @@ -136,5 +146,5 @@ } } ], - "version" : 2 + "version" : 3 } diff --git a/SignInUsingGoogle/SignInUsingGoogle.xcodeproj/project.xcworkspace/xcuserdata/alumno.xcuserdatad/UserInterfaceState.xcuserstate b/SignInUsingGoogle/SignInUsingGoogle.xcodeproj/project.xcworkspace/xcuserdata/alumno.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..ca95e707aba54fb439756195eacef6488a8f3382 GIT binary patch literal 40821 zcmeEv30zgx_wU*J%;z{ Xmr=FmWQpc$0sTZhMsn@8tsJE#$>V4`Ib%y$w zI!9fgzMw8qm#Obj57ZO&LcNg=*`PkCFY1SEQGaBIoRK4PL+;1}c_LpFjbczN8iL|b zJQ|8pQ5s4|qmThjLN&;YW}rLJ95fHzi58*7=pM8bEk|q6T67=Ugf^qCXeW9IJ&Ybf z2hgkNHS{`q1HFmfLT{rsbOODD-bJU-$H)PlLl@DP=qvOCx`KX0*U- -i7z#gZL0Wf}h4m@k{t+d>o&^@8EawNqicAh(E#? z@E7 3B=@Pn>E~CfNm2?d~nXaX$($naf^jvx|y_{Z4-$&n1Z>C%6t@KWM7rmE$iGG 9h2Q^yl;i`V0CJeVP8A{*As)|4#qG& jY(%lF$GKsQ_hTIs+jT2 zBxV{joteSh!OUb9F^ieIm?g~J%w}c_)6BFmt;|+t8?&9+!R%!oVh%7zn5UVe%rWK} z=2hl3<}K!J<~`;N^Eq>Y`GWbL`GL8@_F?<7{a9PJKWoR@vjbQM){%8$omm%lAREAj zu%T=O8_CA9L)c;La5kAuVKdlFwty{Ui`Zh;z*ex8>~wYpdj~s{oyE>(=dg2Gg}swq z#4cg)X76EFuxr_M?0xJ5>_)bk-OE14KF&VD9%i3rpJAV6Ut`~9+t?HADfSHeG5Z<& zIeUq{!v4fw<1oi@A}4V=&Vh5}oH%FBjq~ArxezXt3*!cJ(OeuC&*gK)TnSgs8Mq3r zlAFL)bCbDRZZUTkw}iW!yN6rKE#sDRE4Y>1DsDBmj@!g-=XP*Ax&7S3+(GVX?kIPR zdxm>~JI L W_*Q-^zm4C{@8%!k_wh&hWBfDxv;1@X^ZX0^>--!1JN&!+S^h)*8vir@ z3;!$s8-Jbuo&Q6i1SDXA6M71^LVv+da1-1G55ZIL6#|5CAwq~0QiU`jUC0nJg%LuQ zkSF8|r9zodDVT)W!W?0)pa?{mC)_E_7ZwN$g+;>M!YX04aKG??uu<41Y!`M24-1b7 z2ZV#d HSO!!>5AbcTQ6uuO`6@C=13%?70h`cC>qS#mL zC)$erMF-JE94H2hA!4W)CJq+E#RxH894aP@DdI>mTbv+Pixb63VvRUitQG6TdU1-_ zAWju$i*v+<;v#XexI$bht`Z**H;S9Y&0?##L) *`|{8{`({9R(Do>DKVw`3>TOYV|~ bNOPvXKhnW%?YX})r;y) z>8QR`|H5p2&?M6ga|!(0E<+1ED{72pa|>ld^--`ww^02kTZJKLn&M^9d4{G8j!YgL z6%jZ%B{DfMJSsIMFghY4CNMQTG9)r}aAZt$Ork;8FC#gnu&!Z}x!zb|O0KJDnry0V zw6^R(c~Aj6DM!kQa;99Ufs`xdM!74j!YRBWD54@MveIKG 3YOmk47xyQC*5csSv|f1gnMOyv8KsnPHm{0oUP9_nH%dGjN@ud7QvrvY&05l zwransYb)!fWtdZ8GV~P pmwZs^V3&ohoos;g~msH>?lH5kGo5~CxM zlOh7cVj?30!xO_I0;7{6!UIF1LJ||g6C(#FMnoBO-W@f<+lj`8LZi8$+FT8tDXeas zps%hSUt@wN2Hij?m{8FOs!Ydpb#6~L;6_z-bv5IR4H?#|3_AN8&n(S!JQ4+i&N0$8 zGRieHJTlZZIy~An1inJUqe5I`LStO5OA$jQQ31QCSZW9rN5xY^sbSP`DuGH=Y?MAq zU!|X7tMpgw6nkaBE?9yTDwRs3(y0t86BZ>47QsPDP!g3?B~8hIWyw-tNp#RB{e-${ z*~Y2W C1IDyB-P zQmRaGRGbuN#bqm14j+xBjLJaxC{PJeN99^nQCDdSf@(%oHwJZdDX3%BU`TpX4Rqa9 z+3^%K(X@uTrh4rG=&fdh&ZDEE?7GJ43X|DVpXJw%_pJS!KuuQrS4~Z%CQ&tttKz1( zD;`^^TB?q!r)m{X#ar=#pU}U4sns=&rUnbCC(alNeFY5|`jllfH+Iyker(Y7$fO zwy?cchp93@qjNph{!FK4Q2n=TQM}ryS=4N54mGz#1B+VVnj-C2lesKgpIi+jT~}*t zn9%~Il%j0?D2sxwQEaFF=<9$6prEylJE;X!|7L2w;@eCuR0gS-qf&Xd@3aAoEurqF z?lI^bV0lzt&rwZ>TvL66$qa~NRC}TLD}JMF=%M4RW(C4D!^RFtEUs=eO}2~_Xb&*2 zF`)w1!)&SqtT2_ED^!lpsWStK*42(Nw=Zr6ykmZl>($rJaiE89K=9zmHeL{W=G7Y; zClmv+n5L&!*EY6Fau1avs>j!6)aILk-_z>qfakmWtUv=H9ct^Xv+2`aS4`9EjkT)X zW9jVRgcs8;H81$Jr;dWA`}JwHmHT&FZ@Q_b-qg@$KfvK{*SaM38K~3ArPaCn{_E&A zS2y>+UtQd @Ros0Y>lpT{vz?YEZU2_D01hg<&e z7`|w+<(DmBoZ5ge3
d@L$aCL4yNPFU@o2jbMXuqi9b=lfqCeH zd{6)iLCIkJjX>pSGMb8JqPb`_S`TL4W-#uaL9c*W_cr ;T1gyq1y2om4F4+Rn;Icv|-#!tpU-ItsmLcsCM`UT(wg7s(@t$qjl7MR6q+X z#0Diu32p(gph^iB6>z;eaJ-X1u;6`=zOkXHqOqv~_}%?> &{wRjscQ{z-$J!g zTd8eIs1l|OR>HSZJE)!1E^4 BphEE@N@O#2P>H%N6pymOwVeT$ z lHG-JeP*>Nepj~ngJ4ZK9AO8SNd40EMFBK&F_OtEZuBVpO0mi9nhDr>e;5F7w zGS#M5n`$aGkz-K_fx8<_6+i@ !uW|>vXGYe!nfJQh7yk=3L4`zX C-QWvQ&sjtDq^&4Wr!=*z50Kx_$H{^{Xz?U@?4M&LpW>w(9x(BTU_ x4%X`tmk zv;`~QhK`Q)~9a;qe5?%f91(EnCd48Wp0 z>0X{%-C#;+YMc;co>pDeXwa1<8Eb3n8eJ>uYQeGG=sHz3CSB{QTpIydTz%3qlEDnD zsvh42a09xSk85L{t7*Dwt(YoZjSb^1Hg0?2{0vnj-Y^?|bW|rXp9LP}A}~5CLBp>H zt$H4a`@6t@yq z+?vd$hMWddm8qe@RG9=y?RYSiQl>YWEXrg?vboLT2{=uCutiDHB;#4?!&?E0I!k>- zDOOzTP++VLe?pyC8~#*DZ>BuKB!q??Rr}98s PPA-s7u$VpQ&G{U#Z`y>(uYcNF`etrQ|51m0U%y z8BC`v VszFtr(P)c1l5mPzV*Uo%#v+gEAe6f>1C}##qIuj8iI<%Izo=g`vUlGXjXy zq*M{aD<*={G%~f(<`bF)2T%Lp`)Z%1!&CvQ!G}P&W3 N)@C3BWp729U@&B%k;+76hjK{yP?`2V%0Z)1F4Dsq<)M63fC^C& zDn=!!6n-0n%0W%2Z1>@5Bnn!S+EBK|S>{$%4JtIa*HjHG$lTZf8h2+R0Y8XY4Zhvb zvjHP&E&ieQnr JsEh&IJsV#q1>SWAS_i0G&VRmSjAm)Fo^ZZ zwbgaO$tLq82p$LP)d|VZ2vqffaYnN#P*n qTARCp`3SShdtZBS>tyGNj+qWjSUXk$q|2p4Uol-UZb;k5s&LkpU& z`a LzMrv;{SnYQ~6#Ia*N*Y6XP8=_3Gu9DqVoWe#*a1$^l {Yw0C76+Ml1T z2XJXY`z#Ak-!!hKx wW(j%pQdTJ~z#zSpR!!A%xY3%{n;^|m2|5I@ZP$k&Xhv4og4zJE;MVP9 zwc|;3paC1l!+-~NTPCA+sus-v?V@WfH5PrO1DRC~q-!k}? Sy}1A*mc&*8mN59kEKPsdY7#fNEgIbm_-52pnWV&6+BVPNM8)^q#U@nWmxc zX%%%p0K*i%l@%ax)$eIKd+W-6fEv b0oqZe^qzJh zn^iZyx>k!nXh_#Ci}6rA42tbl9s*(B9-pACa{4B5ZY`c}srBJM6W#5?8jn u6Zs!|teJf487@kHfu<*@Rk^3;t*DgeZp4t1_n>P!7q6ROkVfSbQV)4I)?++ito z ir3=}co^k{9{^$cTDvfPQ~3ZWyq9w3Kf=@! z91k*se(+BTQ@k65Dc+;J-Y!h>Ln_VhL&@s5@&*vM`aMl&YhBq#@e?ZiK87Dx-csIf z!H4maN}KZTKPF7^G5nlGnBr$an4SQ9$1i{|eMj-SMS$9%=d68t1-}786TgaI!>=nR zmG_kQTk)ItEfAWgl+*vd(0mVs-uqpJ-cu!&=Sf78|2<>Ey?UNFJ`#i`{s4-e>00!g zo ^<`?Z$Oxw}! zfSI&CJ%Dzg9cd@pnRcNE(yp|d@|E(n@{RJX@||)?xvYGz{GeRfO?zmVN&9F92<;D; z`C~g~{;U}w1hM}C&3_&==@ cE)Y(6l)7PbRK{pJ(|v?^~!bScjb>(I-f4Uh#-m} z^smDpJ%;K{mv_as^G;6pKlowlo`)vw^IiGLQ@sHOX(JRJ*R`m9$fT@ BE! znw~+B0C5<47IbkoJqH4u6-^Miscr0HS`Z`>l-dPvX$2M0^XNNKDZM~7A_(fK5Q6#< z2xV+1D5Z-bLEl9$v0^SkeF>5~p)S2bCBBvPDta}2FF`#B>P1j*f^0g_7g_{WRBcCd zG lC_U6-PyD3Rx5F^KMSE5E=b&qOmENY6>+|R3ES|udjSK5CJVYOcND#e` z-cLVFKSCd%57LL|N9o7t$LS{svL&cLL3RY$6EuJz2Z9_4aw5o?AQyrL?xCM-hry%t zG5Q($S;~ukp7JEfRYO98JO~OVD1@Ly1tuox|35rbU2PiiK^So=*db~VBcW+J j`u109AKAW zpeWn5=ywOIT&B)SD%iWR|L#-%V!f(;26WOs8IjRJjE<2Qnd!mwWO^|GK%oSM5j2>f zaDpNTirmiFP+m-5rXOR=082-y>=;c@JV8SV8fJ--Ssb_RRBR3^sjHg|-onlws!=%A z*iKa4a^OsK=qRpHdJrTCOoe1~-~ovC-1=}7xJ( #jOZC<_ zArR46U2BOysdak{>+F_dTp16bAI6PwCn$!X*cQf<@gislL2-VL0kH#L@3R)ez? z0 X;IYQV+aPEJe!6R4%`=2$-oWd=hg2m|vtyqSS{Oi;W!RZ?thYJ?aU zgh6z!)^}o=c#BwL;#9Ggtcta7R9WcTg_85e)m3Vqbtaif(Gu@Fi7|kUib*X@s_G(B zv+}z>grI>nR%+0mc8cUN8BFF4*)@uwj83wP$pPkPMl-pLp2;I9lb{g 7{z)`csUk8nu3}X2YU=m(^Q5q=NhM3BJwIjbbi{N5v{L)6g*Hh zJ3X|#Ue^Gr1S(n9gVz||@87A2rFJ!DZ0+kk%o^Ai!YpN$G0T}1%t~ezvzob=pi+X$ z2pU6Fg~mY8Sb~fMjoYb)NZ`v7Dp7xfaj0MFE)neug5&<`