@@ -52,28 +52,40 @@ void BeginListeningServerEvents()
5252#if UNITY_WEBGL && ! UNITY_EDITOR
5353 if ( esGL != null ) return ;
5454 string url = this . ReferenceUrl ;
55- bool withCredential = false ;
56- if ( FirebaseAuth . Instance . IsSignedIn )
57- {
58- url = url + "?auth=" + FirebaseAuth . Instance . AccessToken ;
59- withCredential = true ;
55+ if ( FirebaseAuth . Instance . IsSignedIn ) {
56+ FirebaseAuth . Instance . GetAccessToken ( ( accessToken ) => {
57+ url = url + "?auth=" + accessToken ;
58+ esGL = new FirebaseDatabase . FirebaseEventSourceWebGL ( url , true , null ,
59+ OnEventSourceMessageReceived , OnEventSourceError ) ;
60+ } ) ;
61+ } else {
62+ esGL = new FirebaseDatabase . FirebaseEventSourceWebGL ( url , false , null ,
63+ OnEventSourceMessageReceived , OnEventSourceError ) ;
6064 }
61- esGL = new FirebaseDatabase . FirebaseEventSourceWebGL ( url , withCredential , null ,
62- OnEventSourceMessageReceived , OnEventSourceError ) ;
65+
6366#else
6467 if ( webReq != null ) return ;
6568 string url = this . ReferenceUrl ;
66- if ( FirebaseAuth . Instance . IsSignedIn )
67- url = url + "?auth=" + FirebaseAuth . Instance . AccessToken ;
68- webReq = new UnityWebRequest ( url ) ;
69- webReq . SetRequestHeader ( "Accept" , "text/event-stream" ) ;
70- webReq . SetRequestHeader ( "Cache-Control" , "no-cache" ) ;
71- FirebaseServerEventsDownloadHandler downloadHandler = new FirebaseServerEventsDownloadHandler ( ) ;
72- downloadHandler . DataReceived += OnDataReceived ;
73- webReq . downloadHandler = downloadHandler ;
74- webReq . disposeDownloadHandlerOnDispose = true ;
75- UnityWebRequestAsyncOperation webReqAO = webReq . SendWebRequest ( ) ;
76- webReqAO . completed += ( ( ao ) => OnStopListening ( webReqAO ) ) ;
69+
70+ Action sendRequest = ( ) => {
71+ webReq = new UnityWebRequest ( url ) ;
72+ webReq . SetRequestHeader ( "Accept" , "text/event-stream" ) ;
73+ webReq . SetRequestHeader ( "Cache-Control" , "no-cache" ) ;
74+ FirebaseServerEventsDownloadHandler downloadHandler = new FirebaseServerEventsDownloadHandler ( ) ;
75+ downloadHandler . DataReceived += OnDataReceived ;
76+ webReq . downloadHandler = downloadHandler ;
77+ webReq . disposeDownloadHandlerOnDispose = true ;
78+ UnityWebRequestAsyncOperation webReqAO = webReq . SendWebRequest ( ) ;
79+ webReqAO . completed += ( ( ao ) => OnStopListening ( webReqAO ) ) ;
80+ } ;
81+
82+ if ( FirebaseAuth . Instance . IsSignedIn ) {
83+ FirebaseAuth . Instance . GetAccessToken ( accessToken => {
84+ url = url + "?auth=" + accessToken ;
85+ sendRequest ( ) ;
86+ } ) ;
87+ } else
88+ sendRequest ( ) ;
7789#endif
7890 }
7991
@@ -498,17 +510,22 @@ public override void GetValueAsync(int timeout, Action<Response<DataSnapshot>> O
498510 webReq . downloadHandler = new DownloadHandlerBuffer ( ) ;
499511 webReq . timeout = timeout ;
500512
501- if ( FirebaseAuth . Instance . IsSignedIn )
502- {
503- string sign = query == null ? "?" : "&" ;
504- webReq . url = webReq . url + sign + "auth=" + FirebaseAuth . Instance . AccessToken ;
513+ Action sendRequest = ( ) => {
514+ var op = webReq . SendWebRequest ( ) ;
515+ op . completed += ( ao ) => HandleFirebaseDatabaseResponse ( op , res => {
516+ OnComplete ? . Invoke ( new Response < DataSnapshot > ( res . message , res . success , res . code , new FirebaseDataSnapshot ( this , Json . Deserialize ( res . data ) ) ) ) ;
517+ } ) ;
518+ } ;
519+
520+ if ( FirebaseAuth . Instance . IsSignedIn ) {
521+ FirebaseAuth . Instance . GetAccessToken ( accessToken => {
522+ string sign = query == null ? "?" : "&" ;
523+ webReq . url = webReq . url + sign + "auth=" + accessToken ;
524+ sendRequest ( ) ;
525+ } ) ;
526+ } else {
527+ sendRequest ( ) ;
505528 }
506- UnityWebRequestAsyncOperation op = webReq . SendWebRequest ( ) ;
507- op . completed += ( ( ao ) => HandleFirebaseDatabaseResponse ( op , ( res ) =>
508- {
509- if ( OnComplete != null )
510- OnComplete ( new Response < DataSnapshot > ( res . message , res . success , res . code , new FirebaseDataSnapshot ( this , Json . Deserialize ( res . data ) ) ) ) ;
511- } ) ) ;
512529 }
513530
514531 public void Push ( object data , int timeout , Action < Response < string > > OnComplete )
@@ -558,10 +575,19 @@ public void RemoveValueAsync(int timeout, Action<Response> OnComplete)
558575 webReq . SetRequestHeader ( "Content-Type" , "application/json" ) ;
559576 webReq . timeout = timeout ;
560577
561- if ( FirebaseAuth . Instance . IsSignedIn )
562- webReq . url = webReq . url + "?auth=" + FirebaseAuth . Instance . AccessToken ;
563- UnityWebRequestAsyncOperation op = webReq . SendWebRequest ( ) ;
564- op . completed += ( ( ao ) => HandleFirebaseDatabaseResponse ( op , OnComplete ) ) ;
578+ Action sendRequest = ( ) => {
579+ var op = webReq . SendWebRequest ( ) ;
580+ op . completed += ( ( ao ) => HandleFirebaseDatabaseResponse ( op , OnComplete ) ) ;
581+ } ;
582+
583+ if ( FirebaseAuth . Instance . IsSignedIn ) {
584+ FirebaseAuth . Instance . GetAccessToken ( ( accessToken ) => {
585+ webReq . url = webReq . url + "?auth=" + accessToken ;
586+ sendRequest ( ) ;
587+ } ) ;
588+ } else {
589+ sendRequest ( ) ;
590+ }
565591 }
566592
567593 void PushFirebaseData ( string dbpath , string rawData , int timeout , Action < Response < string > > OnComplete )
@@ -573,20 +599,26 @@ void PushFirebaseData(string dbpath, string rawData, int timeout, Action<Respons
573599 webReq . SetRequestHeader ( "Content-Type" , "application/json" ) ;
574600 webReq . timeout = timeout ;
575601
576- if ( FirebaseAuth . Instance . IsSignedIn )
577- webReq . url = webReq . url + "?auth=" + FirebaseAuth . Instance . AccessToken ;
578- UnityWebRequestAsyncOperation op = webReq . SendWebRequest ( ) ;
579- op . completed += ( ( ao ) => HandleFirebaseDatabaseResponse ( op , ( res ) =>
580- {
581- string pushedId = null ;
582- if ( res . success )
583- {
584- Dictionary < string , object > data = Json . Deserialize ( res . data ) as Dictionary < string , object > ;
585- pushedId = data [ "name" ] . ToString ( ) ;
586- }
587- if ( OnComplete != null )
588- OnComplete ( new Response < string > ( res . message , res . success , res . code , pushedId ) ) ;
589- } ) ) ;
602+ Action sendRequest = ( ) => {
603+ var op = webReq . SendWebRequest ( ) ;
604+ op . completed += ( ao ) => HandleFirebaseDatabaseResponse ( op , ( res ) => {
605+ string pushedId = null ;
606+ if ( res . success ) {
607+ Dictionary < string , object > data = Json . Deserialize ( res . data ) as Dictionary < string , object > ;
608+ pushedId = data [ "name" ] . ToString ( ) ;
609+ }
610+ OnComplete ? . Invoke ( new Response < string > ( res . message , res . success , res . code , pushedId ) ) ;
611+ } ) ;
612+ } ;
613+
614+ if ( FirebaseAuth . Instance . IsSignedIn ) {
615+ FirebaseAuth . Instance . GetAccessToken ( accessToken => {
616+ webReq . url = webReq . url + "?auth=" + accessToken ;
617+ sendRequest ( ) ;
618+ } ) ;
619+ } else {
620+ sendRequest ( ) ;
621+ }
590622 }
591623
592624 void WriteFirebaseData ( string dbpath , object data , int timeout , string requestMethod , Action < Response > OnComplete )
@@ -598,10 +630,19 @@ void WriteFirebaseData(string dbpath, object data, int timeout, string requestMe
598630 webReq . SetRequestHeader ( "Content-Type" , "application/json" ) ;
599631 webReq . timeout = timeout ;
600632
601- if ( FirebaseAuth . Instance . IsSignedIn )
602- webReq . url = webReq . url + "?auth=" + FirebaseAuth . Instance . AccessToken ;
603- UnityWebRequestAsyncOperation op = webReq . SendWebRequest ( ) ;
604- op . completed += ( ( ao ) => HandleFirebaseDatabaseResponse ( op , OnComplete ) ) ;
633+ Action sendRequest = ( ) => {
634+ var op = webReq . SendWebRequest ( ) ;
635+ op . completed += ( ( ao ) => HandleFirebaseDatabaseResponse ( op , OnComplete ) ) ;
636+ } ;
637+
638+ if ( FirebaseAuth . Instance . IsSignedIn ) {
639+ FirebaseAuth . Instance . GetAccessToken ( ( accessToken ) => {
640+ webReq . url = webReq . url + "?auth=" + accessToken ;
641+ sendRequest ( ) ;
642+ } ) ;
643+ } else {
644+ sendRequest ( ) ;
645+ }
605646 }
606647
607648 void HandleFirebaseDatabaseResponse ( UnityWebRequestAsyncOperation webReqOp , Action < Response > OnComplete )
0 commit comments