12
12
import java .lang .reflect .InvocationTargetException ;
13
13
14
14
public enum AuthProviderType {
15
- GOOGLE ("google" , GoogleAuthProvider . class , R .id .google_button ),
16
- FACEBOOK ("facebook" , FacebookAuthProvider . class , R .id .facebook_button ),
17
- TWITTER ("twitter" , TwitterAuthProvider . class , R .id .twitter_button ),
18
- PASSWORD ("password" , PasswordAuthProvider . class , R .id .password_button );
15
+ GOOGLE ("google" , "com.firebase.ui.auth.google.GoogleAuthProvider" , R .id .google_button ),
16
+ FACEBOOK ("facebook" , "com.firebase.ui.auth.facebook.FacebookAuthProvider" , R .id .facebook_button ),
17
+ TWITTER ("twitter" , "com.firebase.ui.auth.twitter.TwitterAuthProvider" , R .id .twitter_button ),
18
+ PASSWORD ("password" , "com.firebase.ui.auth.password.PasswordAuthProvider" , R .id .password_button );
19
19
20
20
private final String mName ;
21
- private final Class <? extends FirebaseAuthProvider > mClass ;
21
+ private final String mProviderName ;
22
22
private final int mButtonId ;
23
23
24
- AuthProviderType (String name , Class <? extends FirebaseAuthProvider > clazz , int button_id ) {
24
+ AuthProviderType (String name , String providerName , int button_id ) {
25
25
this .mName = name ;
26
- this .mClass = clazz ;
26
+ this .mProviderName = providerName ;
27
27
this .mButtonId = button_id ;
28
28
}
29
29
@@ -36,7 +36,8 @@ public int getButtonId() {
36
36
37
37
public FirebaseAuthProvider createProvider (Context context , Firebase ref , TokenAuthHandler handler ) {
38
38
try {
39
- return mClass .getConstructor (Context .class , AuthProviderType .class , String .class , Firebase .class , TokenAuthHandler .class ).newInstance (context , this , this .getName (), ref , handler );
39
+ Class <? extends FirebaseAuthProvider > clazz = (Class <? extends FirebaseAuthProvider >) Class .forName (mProviderName );
40
+ return clazz .getConstructor (Context .class , AuthProviderType .class , String .class , Firebase .class , TokenAuthHandler .class ).newInstance (context , this , this .getName (), ref , handler );
40
41
} catch (NoSuchMethodException e ) {
41
42
throw new RuntimeException (e );
42
43
} catch (IllegalAccessException e ) {
@@ -45,6 +46,8 @@ public FirebaseAuthProvider createProvider(Context context, Firebase ref, TokenA
45
46
throw new RuntimeException (e );
46
47
} catch (InvocationTargetException e ) {
47
48
throw new RuntimeException (e );
49
+ } catch (ClassNotFoundException e ) {
50
+ throw new RuntimeException (e );
48
51
}
49
52
}
50
53
public static AuthProviderType getTypeForProvider (FirebaseAuthProvider provider ) {
0 commit comments