Skip to content

Commit f8fc2d7

Browse files
committed
Auto login with either Twitter/Facebook saved tokens
1 parent 2028d03 commit f8fc2d7

File tree

2 files changed

+40
-37
lines changed

2 files changed

+40
-37
lines changed

src/AndroidClient/androidchat/src/main/java/servicestack/net/androidchat/LoginActivity.java

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,19 @@ public void failure(TwitterException exception) {
106106
LoginManager.getInstance().registerCallback(facebookCallback, new FacebookCallback<LoginResult>() {
107107
@Override
108108
public void onSuccess(LoginResult loginResult) {
109-
loginWithFacebook(loginResult.getAccessToken());
109+
App.get().getServiceClient().postAsync(new dtos.Authenticate()
110+
.setProvider("facebook")
111+
.setAccessToken(loginResult.getAccessToken().getToken())
112+
.setRememberMe(true),
113+
r -> {
114+
Intent intent = new Intent(activity, MainActivity.class);
115+
stopProgressBar();
116+
startActivity(intent);
117+
},
118+
error -> {
119+
Log.e("Facebook LoginButton FAILED!", error);
120+
stopProgressBar();
121+
});
110122
}
111123

112124
@Override
@@ -129,33 +141,23 @@ public void onError(FacebookException exception) {
129141

130142
ImageButton btnAnon = (ImageButton)findViewById(R.id.btnAnon);
131143
btnAnon.setOnClickListener(view -> {
132-
startProgressBar();
133144
startGuestChatActivity(App.get().getServiceClient());
134-
stopProgressBar();
135145
});
136146

137-
//Login with facebook if already logged in
138-
AccessToken accessToken = AccessToken.getCurrentAccessToken();
139-
if (accessToken != null){
140-
loginWithFacebook(accessToken);
141-
}
142-
}
143-
144-
private void loginWithFacebook(AccessToken accessToken){
145-
LoginActivity activity = this;
146-
App.get().getServiceClient().postAsync(new dtos.Authenticate()
147-
.setProvider("facebook")
148-
.setAccessToken(accessToken.getToken())
149-
.setRememberMe(true),
147+
dtos.Authenticate authDto = App.get().getSavedAccessToken();
148+
if (authDto != null){
149+
Log.i("Signing in with existing " + authDto.getProvider() + " AccessToken...");
150+
App.get().getServiceClient().postAsync(authDto,
150151
r -> {
151152
Intent intent = new Intent(activity, MainActivity.class);
152-
startActivity(intent);
153153
stopProgressBar();
154+
startActivity(intent);
154155
},
155156
error -> {
156-
Log.e("Facebook LoginButton FAILED!", error);
157+
Log.e("Error logging into " + authDto.getProvider() + " using Saved AccessToken", error);
157158
stopProgressBar();
158159
});
160+
}
159161
}
160162

161163
@Override

src/AndroidClient/androidchat/src/main/java/servicestack/net/androidchat/LoginButtonsActivity.java

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -106,8 +106,19 @@ public void failure(TwitterException exception) {
106106
btnFacebookLogin.registerCallback(facebookCallback, new FacebookCallback<LoginResult>() {
107107
@Override
108108
public void onSuccess(LoginResult loginResult) {
109-
startProgressBar();
110-
loginWithFacebook(loginResult.getAccessToken());
109+
App.get().getServiceClient().postAsync(new dtos.Authenticate()
110+
.setProvider("facebook")
111+
.setAccessToken(loginResult.getAccessToken().getToken())
112+
.setRememberMe(true),
113+
r -> {
114+
Intent intent = new Intent(activity, MainActivity.class);
115+
stopProgressBar();
116+
startActivity(intent);
117+
},
118+
error -> {
119+
Log.e("Facebook LoginButton FAILED!", error);
120+
stopProgressBar();
121+
});
111122
}
112123

113124
@Override
@@ -124,33 +135,23 @@ public void onError(FacebookException exception) {
124135

125136
Button btnGuestLogin = (Button)findViewById(R.id.btnGuestLogin);
126137
btnGuestLogin.setOnClickListener(view -> {
127-
startProgressBar();
128138
startGuestChatActivity(App.get().getServiceClient());
129-
stopProgressBar();
130139
});
131140

132-
//Login with facebook if already logged in
133-
// AccessToken accessToken = AccessToken.getCurrentAccessToken();
134-
// if (accessToken != null){
135-
// loginWithFacebook(accessToken);
136-
// }
137-
}
138-
139-
private void loginWithFacebook(AccessToken accessToken){
140-
LoginButtonsActivity activity = this;
141-
App.get().getServiceClient().postAsync(new dtos.Authenticate()
142-
.setProvider("facebook")
143-
.setAccessToken(accessToken.getToken())
144-
.setRememberMe(true),
141+
dtos.Authenticate authDto = App.get().getSavedAccessToken();
142+
if (authDto != null){
143+
Log.i("Signing in with existing " + authDto.getProvider() + " AccessToken...");
144+
App.get().getServiceClient().postAsync(authDto,
145145
r -> {
146146
Intent intent = new Intent(activity, MainActivity.class);
147-
startActivity(intent);
148147
stopProgressBar();
148+
startActivity(intent);
149149
},
150150
error -> {
151-
Log.e("Facebook LoginButton FAILED!", error);
151+
Log.e("Error logging into " + authDto.getProvider() + " using Saved AccessToken", error);
152152
stopProgressBar();
153153
});
154+
}
154155
}
155156

156157
@Override

0 commit comments

Comments
 (0)