@@ -52,28 +52,40 @@ void BeginListeningServerEvents()
52
52
#if UNITY_WEBGL && ! UNITY_EDITOR
53
53
if ( esGL != null ) return ;
54
54
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 ) ;
60
64
}
61
- esGL = new FirebaseDatabase . FirebaseEventSourceWebGL ( url , withCredential , null ,
62
- OnEventSourceMessageReceived , OnEventSourceError ) ;
65
+
63
66
#else
64
67
if ( webReq != null ) return ;
65
68
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 ( ) ;
77
89
#endif
78
90
}
79
91
@@ -498,17 +510,22 @@ public override void GetValueAsync(int timeout, Action<Response<DataSnapshot>> O
498
510
webReq . downloadHandler = new DownloadHandlerBuffer ( ) ;
499
511
webReq . timeout = timeout ;
500
512
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 ( ) ;
505
528
}
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
- } ) ) ;
512
529
}
513
530
514
531
public void Push ( object data , int timeout , Action < Response < string > > OnComplete )
@@ -558,10 +575,19 @@ public void RemoveValueAsync(int timeout, Action<Response> OnComplete)
558
575
webReq . SetRequestHeader ( "Content-Type" , "application/json" ) ;
559
576
webReq . timeout = timeout ;
560
577
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
+ }
565
591
}
566
592
567
593
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
573
599
webReq . SetRequestHeader ( "Content-Type" , "application/json" ) ;
574
600
webReq . timeout = timeout ;
575
601
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
+ }
590
622
}
591
623
592
624
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
598
630
webReq . SetRequestHeader ( "Content-Type" , "application/json" ) ;
599
631
webReq . timeout = timeout ;
600
632
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
+ }
605
646
}
606
647
607
648
void HandleFirebaseDatabaseResponse ( UnityWebRequestAsyncOperation webReqOp , Action < Response > OnComplete )
0 commit comments