11package servicestack .net .androidchat ;
22
3- import android .accounts .Account ;
43import android .animation .ObjectAnimator ;
54import android .animation .ValueAnimator ;
65import android .content .Intent ;
7- import android .content .SharedPreferences ;
86import android .os .Bundle ;
9- import android .preference .PreferenceManager ;
107import android .support .v4 .view .animation .FastOutLinearInInterpolator ;
118import android .support .v7 .app .AppCompatActivity ;
129import android .support .v7 .widget .Toolbar ;
1310import android .view .View ;
1411import android .widget .ImageButton ;
1512import android .widget .ProgressBar ;
1613
14+ import com .facebook .AccessToken ;
15+ import com .facebook .CallbackManager ;
16+ import com .facebook .FacebookCallback ;
17+ import com .facebook .FacebookException ;
18+ import com .facebook .login .LoginManager ;
19+ import com .facebook .login .LoginResult ;
1720import com .twitter .sdk .android .Twitter ;
1821import com .twitter .sdk .android .core .Callback ;
1922import com .twitter .sdk .android .core .Result ;
2528import net .servicestack .android .AndroidServiceClient ;
2629import net .servicestack .client .Log ;
2730
28- import io . fabric . sdk . android . Fabric ;
31+ import java . util . Arrays ;
2932
33+ import io .fabric .sdk .android .Fabric ;
3034
3135/**
32- * Created by mythz on 2/16/2017.
36+ * This Login Page signs in using Custom Facebook and Twitter Image Buttons
3337 */
3438
3539public class LoginActivity extends AppCompatActivity {
3640 private ProgressBar progressBar ;
3741 private ObjectAnimator animation ;
42+
3843 private TwitterAuthClient twitterAuth ;
44+ private CallbackManager facebookCallback ;
3945
4046 @ Override
4147 protected void onCreate (Bundle savedInstanceState ){
4248 super .onCreate (savedInstanceState );
4349
44- // Create your application here
45- // Set our view from the "main" layout resource
50+ Fabric .with (this , new Twitter (new TwitterAuthConfig (
51+ getString (R .string .twitter_key ),
52+ getString (R .string .twitter_secret ))));
53+
4654 setContentView (R .layout .login );
4755
4856 Toolbar toolbar = (Toolbar )findViewById (R .id .loginToolbar );
@@ -58,16 +66,9 @@ protected void onCreate(Bundle savedInstanceState){
5866 animation .setDuration (1500 );
5967 animation .setInterpolator (new FastOutLinearInInterpolator ());
6068
61- ImageButton btnTwitter = (ImageButton )findViewById (R .id .btnTwitter );
62- ImageButton btnAnon = (ImageButton )findViewById (R .id .btnAnon );
6369 LoginActivity activity = this ;
6470
65- TwitterAuthConfig authConfig = new TwitterAuthConfig (
66- getString (R .string .twitter_key ),
67- getString (R .string .twitter_secret ));
68-
69- Fabric .with (this , new Twitter (authConfig ));
70-
71+ ImageButton btnTwitter = (ImageButton )findViewById (R .id .btnTwitter );
7172 twitterAuth = new TwitterAuthClient ();
7273 btnTwitter .setOnClickListener (view -> {
7374 startProgressBar ();
@@ -78,7 +79,6 @@ public void success(Result<TwitterSession> result) {
7879
7980 App .get ().getServiceClient ().postAsync (new dtos .Authenticate ()
8081 .setProvider ("twitter" )
81- .setUserName (Long .toString (session .getUserId ()))
8282 .setAccessToken (session .getAuthToken ().token )
8383 .setAccessTokenSecret (session .getAuthToken ().secret )
8484 .setRememberMe (true ),
@@ -101,17 +101,67 @@ public void failure(TwitterException exception) {
101101 });
102102 });
103103
104+ facebookCallback = CallbackManager .Factory .create ();
105+ LoginManager .getInstance ().registerCallback (facebookCallback , new FacebookCallback <LoginResult >() {
106+ @ Override
107+ public void onSuccess (LoginResult loginResult ) {
108+ loginWithFacebook (loginResult .getAccessToken ());
109+ }
110+
111+ @ Override
112+ public void onCancel () {
113+ stopProgressBar ();
114+ }
115+
116+ @ Override
117+ public void onError (FacebookException exception ) {
118+ Log .e (exception );
119+ stopProgressBar ();
120+ }
121+ });
122+
123+ ImageButton btnFacebook = (ImageButton )findViewById (R .id .btnFacebook );
124+ btnFacebook .setOnClickListener (view -> {
125+ startProgressBar ();
126+ LoginManager .getInstance ().logInWithReadPermissions (this , Arrays .asList ("email" ));
127+ });
128+
129+ ImageButton btnAnon = (ImageButton )findViewById (R .id .btnAnon );
104130 btnAnon .setOnClickListener (view -> {
105131 startProgressBar ();
106132 startGuestChatActivity (App .get ().getServiceClient ());
107133 stopProgressBar ();
108134 });
135+
136+ //Login with facebook if already logged in
137+ AccessToken accessToken = AccessToken .getCurrentAccessToken ();
138+ if (accessToken != null ){
139+ loginWithFacebook (accessToken );
140+ }
141+ }
142+
143+ private void loginWithFacebook (AccessToken accessToken ){
144+ LoginActivity activity = this ;
145+ App .get ().getServiceClient ().postAsync (new dtos .Authenticate ()
146+ .setProvider ("facebook" )
147+ .setAccessToken (accessToken .getToken ())
148+ .setRememberMe (true ),
149+ r -> {
150+ Intent intent = new Intent (activity , MainActivity .class );
151+ startActivity (intent );
152+ stopProgressBar ();
153+ },
154+ error -> {
155+ Log .e ("Facebook LoginButton FAILED!" , error );
156+ stopProgressBar ();
157+ });
109158 }
110159
111160 @ Override
112161 protected void onActivityResult (int requestCode , int resultCode , Intent data ) {
113162 super .onActivityResult (requestCode , resultCode , data );
114163 twitterAuth .onActivityResult (requestCode , resultCode , data );
164+ facebookCallback .onActivityResult (requestCode , resultCode , data );
115165 }
116166
117167 private void startProgressBar (){
0 commit comments