24
24
25
25
import com .firebase .ui .auth .ui .ExtraConstants ;
26
26
import com .google .firebase .auth .FacebookAuthProvider ;
27
- import com .google .firebase .auth .GithubAuthProvider ;
28
27
import com .google .firebase .auth .GoogleAuthProvider ;
29
28
import com .google .firebase .auth .TwitterAuthProvider ;
30
29
31
30
/**
32
31
* A container that encapsulates the result of authenticating with an Identity Provider.
33
32
*/
34
33
public class IdpResponse implements Parcelable {
35
- private final String mProviderId ;
36
- private final String mEmail ;
37
- private final String mPhoneNumber ;
34
+ private final User mUser ;
38
35
private final String mToken ;
39
36
private final String mSecret ;
40
37
private final int mErrorCode ;
41
38
42
39
private IdpResponse (int errorCode ) {
43
- this (null , null , null , null , null , errorCode );
40
+ this (null , null , null , errorCode );
44
41
}
45
42
46
43
private IdpResponse (
47
- String providerId ,
48
- String email ,
49
- String phoneNumber ,
44
+ User user ,
50
45
String token ,
51
46
String secret ,
52
47
int errorCode ) {
53
- mProviderId = providerId ;
54
- mEmail = email ;
55
- mPhoneNumber = phoneNumber ;
48
+ mUser = user ;
56
49
mToken = token ;
57
50
mSecret = secret ;
58
51
mErrorCode = errorCode ;
@@ -89,23 +82,23 @@ public Intent toIntent() {
89
82
@ NonNull
90
83
@ AuthUI .SupportedProvider
91
84
public String getProviderType () {
92
- return mProviderId ;
85
+ return mUser . getProviderId () ;
93
86
}
94
87
95
88
/**
96
89
* Get the email used to sign in.
97
90
*/
98
91
@ Nullable
99
92
public String getEmail () {
100
- return mEmail ;
93
+ return mUser . getEmail () ;
101
94
}
102
95
103
96
/**
104
97
* Get the phone number used to sign in.
105
98
*/
106
99
@ Nullable
107
100
public String getPhoneNumber () {
108
- return mPhoneNumber ;
101
+ return mUser . getPhoneNumber () ;
109
102
}
110
103
111
104
/**
@@ -138,9 +131,7 @@ public int describeContents() {
138
131
139
132
@ Override
140
133
public void writeToParcel (Parcel dest , int flags ) {
141
- dest .writeString (mProviderId );
142
- dest .writeString (mEmail );
143
- dest .writeString (mPhoneNumber );
134
+ dest .writeParcelable (mUser , flags );
144
135
dest .writeString (mToken );
145
136
dest .writeString (mSecret );
146
137
dest .writeInt (mErrorCode );
@@ -150,9 +141,7 @@ public void writeToParcel(Parcel dest, int flags) {
150
141
@ Override
151
142
public IdpResponse createFromParcel (Parcel in ) {
152
143
return new IdpResponse (
153
- in .readString (),
154
- in .readString (),
155
- in .readString (),
144
+ in .<User >readParcelable (User .class .getClassLoader ()),
156
145
in .readString (),
157
146
in .readString (),
158
147
in .readInt ()
@@ -167,21 +156,12 @@ public IdpResponse[] newArray(int size) {
167
156
168
157
@ RestrictTo (RestrictTo .Scope .LIBRARY_GROUP )
169
158
public static class Builder {
170
- private String mProviderId ;
171
- private String mEmail ;
172
- private String mPhoneNumber ;
159
+ private User mUser ;
173
160
private String mToken ;
174
161
private String mSecret ;
175
162
176
- public Builder (@ AuthUI .SupportedProvider @ NonNull String providerId ,
177
- @ Nullable String email ) {
178
- mProviderId = providerId ;
179
- mEmail = email ;
180
- }
181
-
182
- public Builder setPhoneNumber (String phoneNumber ) {
183
- mPhoneNumber = phoneNumber ;
184
- return this ;
163
+ public Builder (@ NonNull User user ) {
164
+ mUser = user ;
185
165
}
186
166
187
167
public Builder setToken (String token ) {
@@ -195,22 +175,21 @@ public Builder setSecret(String secret) {
195
175
}
196
176
197
177
public IdpResponse build () {
198
- if (( mProviderId . equalsIgnoreCase ( GoogleAuthProvider . PROVIDER_ID )
199
- || mProviderId .equalsIgnoreCase (FacebookAuthProvider .PROVIDER_ID )
200
- || mProviderId .equalsIgnoreCase (TwitterAuthProvider .PROVIDER_ID )
201
- || mProviderId .equalsIgnoreCase (GithubAuthProvider .PROVIDER_ID ))
178
+ String providerId = mUser . getProviderId ();
179
+ if (( providerId .equalsIgnoreCase (GoogleAuthProvider .PROVIDER_ID )
180
+ || providerId .equalsIgnoreCase (FacebookAuthProvider .PROVIDER_ID )
181
+ || providerId .equalsIgnoreCase (TwitterAuthProvider .PROVIDER_ID ))
202
182
&& TextUtils .isEmpty (mToken )) {
203
183
throw new IllegalStateException (
204
184
"Token cannot be null when using a non-email provider." );
205
185
}
206
- if (mProviderId .equalsIgnoreCase (TwitterAuthProvider .PROVIDER_ID )
186
+ if (providerId .equalsIgnoreCase (TwitterAuthProvider .PROVIDER_ID )
207
187
&& TextUtils .isEmpty (mSecret )) {
208
188
throw new IllegalStateException (
209
189
"Secret cannot be null when using the Twitter provider." );
210
190
}
211
191
212
- return new IdpResponse (
213
- mProviderId , mEmail , mPhoneNumber , mToken , mSecret , ResultCodes .OK );
192
+ return new IdpResponse (mUser , mToken , mSecret , ResultCodes .OK );
214
193
}
215
194
}
216
195
}
0 commit comments