@@ -52,28 +52,35 @@ 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+ }
62+ else {
63+ esGL = new FirebaseDatabase . FirebaseEventSourceWebGL ( url , false , null ,
64+ OnEventSourceMessageReceived , OnEventSourceError ) ;
6065 }
61- esGL = new FirebaseDatabase . FirebaseEventSourceWebGL ( url , withCredential , null ,
62- OnEventSourceMessageReceived , OnEventSourceError ) ;
66+
6367#else
6468 if ( webReq != null ) return ;
6569 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 ) ) ;
70+ if ( FirebaseAuth . Instance . IsSignedIn ) {
71+ FirebaseAuth . Instance . GetAccessToken ( accessToken => {
72+ url = url + "?auth=" + accessToken ;
73+ webReq = new UnityWebRequest ( url ) ;
74+ webReq . SetRequestHeader ( "Accept" , "text/event-stream" ) ;
75+ webReq . SetRequestHeader ( "Cache-Control" , "no-cache" ) ;
76+ FirebaseServerEventsDownloadHandler downloadHandler = new FirebaseServerEventsDownloadHandler ( ) ;
77+ downloadHandler . DataReceived += OnDataReceived ;
78+ webReq . downloadHandler = downloadHandler ;
79+ webReq . disposeDownloadHandlerOnDispose = true ;
80+ UnityWebRequestAsyncOperation webReqAO = webReq . SendWebRequest ( ) ;
81+ webReqAO . completed += ( ( ao ) => OnStopListening ( webReqAO ) ) ;
82+ } ) ;
83+ }
7784#endif
7885 }
7986
@@ -498,17 +505,22 @@ public override void GetValueAsync(int timeout, Action<Response<DataSnapshot>> O
498505 webReq . downloadHandler = new DownloadHandlerBuffer ( ) ;
499506 webReq . timeout = timeout ;
500507
501- if ( FirebaseAuth . Instance . IsSignedIn )
502- {
503- string sign = query == null ? "?" : "&" ;
504- webReq . url = webReq . url + sign + "auth=" + FirebaseAuth . Instance . AccessToken ;
508+ Action sendRequest = ( ) => {
509+ var op = webReq . SendWebRequest ( ) ;
510+ op . completed += ( ao ) => HandleFirebaseDatabaseResponse ( op , res => {
511+ OnComplete ? . Invoke ( new Response < DataSnapshot > ( res . message , res . success , res . code , new FirebaseDataSnapshot ( this , Json . Deserialize ( res . data ) ) ) ) ;
512+ } ) ;
513+ } ;
514+
515+ if ( FirebaseAuth . Instance . IsSignedIn ) {
516+ FirebaseAuth . Instance . GetAccessToken ( accessToken => {
517+ string sign = query == null ? "?" : "&" ;
518+ webReq . url = webReq . url + sign + "auth=" + accessToken ;
519+ sendRequest ( ) ;
520+ } ) ;
521+ } else {
522+ sendRequest ( ) ;
505523 }
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- } ) ) ;
512524 }
513525
514526 public void Push ( object data , int timeout , Action < Response < string > > OnComplete )
@@ -558,10 +570,19 @@ public void RemoveValueAsync(int timeout, Action<Response> OnComplete)
558570 webReq . SetRequestHeader ( "Content-Type" , "application/json" ) ;
559571 webReq . timeout = timeout ;
560572
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 ) ) ;
573+ Action sendRequest = ( ) => {
574+ var op = webReq . SendWebRequest ( ) ;
575+ op . completed += ( ( ao ) => HandleFirebaseDatabaseResponse ( op , OnComplete ) ) ;
576+ } ;
577+
578+ if ( FirebaseAuth . Instance . IsSignedIn ) {
579+ FirebaseAuth . Instance . GetAccessToken ( ( accessToken ) => {
580+ webReq . url = webReq . url + "?auth=" + accessToken ;
581+ sendRequest ( ) ;
582+ } ) ;
583+ } else {
584+ sendRequest ( ) ;
585+ }
565586 }
566587
567588 void PushFirebaseData ( string dbpath , string rawData , int timeout , Action < Response < string > > OnComplete )
@@ -573,20 +594,26 @@ void PushFirebaseData(string dbpath, string rawData, int timeout, Action<Respons
573594 webReq . SetRequestHeader ( "Content-Type" , "application/json" ) ;
574595 webReq . timeout = timeout ;
575596
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- } ) ) ;
597+ Action sendRequest = ( ) => {
598+ var op = webReq . SendWebRequest ( ) ;
599+ op . completed += ( ao ) => HandleFirebaseDatabaseResponse ( op , ( res ) => {
600+ string pushedId = null ;
601+ if ( res . success ) {
602+ Dictionary < string , object > data = Json . Deserialize ( res . data ) as Dictionary < string , object > ;
603+ pushedId = data [ "name" ] . ToString ( ) ;
604+ }
605+ OnComplete ? . Invoke ( new Response < string > ( res . message , res . success , res . code , pushedId ) ) ;
606+ } ) ;
607+ } ;
608+
609+ if ( FirebaseAuth . Instance . IsSignedIn ) {
610+ FirebaseAuth . Instance . GetAccessToken ( accessToken => {
611+ webReq . url = webReq . url + "?auth=" + accessToken ;
612+ sendRequest ( ) ;
613+ } ) ;
614+ } else {
615+ sendRequest ( ) ;
616+ }
590617 }
591618
592619 void WriteFirebaseData ( string dbpath , object data , int timeout , string requestMethod , Action < Response > OnComplete )
@@ -598,10 +625,19 @@ void WriteFirebaseData(string dbpath, object data, int timeout, string requestMe
598625 webReq . SetRequestHeader ( "Content-Type" , "application/json" ) ;
599626 webReq . timeout = timeout ;
600627
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 ) ) ;
628+ Action sendRequest = ( ) => {
629+ var op = webReq . SendWebRequest ( ) ;
630+ op . completed += ( ( ao ) => HandleFirebaseDatabaseResponse ( op , OnComplete ) ) ;
631+ } ;
632+
633+ if ( FirebaseAuth . Instance . IsSignedIn ) {
634+ FirebaseAuth . Instance . GetAccessToken ( ( accessToken ) => {
635+ webReq . url = webReq . url + "?auth=" + accessToken ;
636+ sendRequest ( ) ;
637+ } ) ;
638+ } else {
639+ sendRequest ( ) ;
640+ }
605641 }
606642
607643 void HandleFirebaseDatabaseResponse ( UnityWebRequestAsyncOperation webReqOp , Action < Response > OnComplete )
0 commit comments