diff --git a/app/src/main/java/org/nuclearfog/twidda/activities/LoginActivity.java b/app/src/main/java/org/nuclearfog/twidda/activities/LoginActivity.java index f3d55c42..72e25d46 100644 --- a/app/src/main/java/org/nuclearfog/twidda/activities/LoginActivity.java +++ b/app/src/main/java/org/nuclearfog/twidda/activities/LoginActivity.java @@ -187,7 +187,7 @@ public class LoginActivity extends AppCompatActivity implements OnClickListener * * @param error Twitter exception */ - public void onError(TwitterError error) { + public void onError(@Nullable TwitterError error) { ErrorHandler.handleFailure(this, error); } diff --git a/app/src/main/java/org/nuclearfog/twidda/backend/Registration.java b/app/src/main/java/org/nuclearfog/twidda/backend/Registration.java index cf448198..1fd402cd 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/Registration.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/Registration.java @@ -50,38 +50,43 @@ public class Registration extends AsyncTask { @Override protected String doInBackground(String... param) { try { - // check if we need to backup current session - if (settings.isLoggedIn() && !accountDB.exists(settings.getCurrentUserId())) { - accountDB.setLogin(settings.getCurrentUserId(), settings.getAccessToken(), settings.getTokenSecret()); - } // no PIN means we need to request a token to login if (param.length == 0) { + // backup current login if exist + if (settings.isLoggedIn() && !accountDB.exists(settings.getCurrentUserId())) { + accountDB.setLogin(settings.getCurrentUserId(), settings.getAccessToken(), settings.getTokenSecret()); + } return twitter.getRequestToken(); } - // login with pin + // login with pin and access token User user = twitter.login(param[0], param[1]); + // save new user information database.storeUser(user); + accountDB.setLogin(user.getId(), settings.getAccessToken(), settings.getTokenSecret()); return ""; } catch (TwitterException exception) { this.exception = exception; + return null; } - return null; } @Override - protected void onPostExecute(String redirectionURL) { + protected void onPostExecute(String result) { LoginActivity activity = callback.get(); if (activity != null) { - if (redirectionURL != null) { - if (!redirectionURL.isEmpty()) { - activity.connect(redirectionURL); - } else if (exception != null) { - activity.onError(exception); - } else { + // redirect to Twitter login page + if (result != null) { + if (result.isEmpty()) { activity.onSuccess(); + } else { + activity.connect(result); } } + // notify when an error occured + else { + activity.onError(exception); + } } } } \ No newline at end of file diff --git a/app/src/main/java/org/nuclearfog/twidda/backend/api/Twitter.java b/app/src/main/java/org/nuclearfog/twidda/backend/api/Twitter.java index b45c3fa3..b8a43b36 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/api/Twitter.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/api/Twitter.java @@ -184,6 +184,7 @@ public class Twitter implements GlobalSettings.SettingsListener { Response response = post(REQUEST_TOKEN, new ArrayList<>(1)); if (response.code() == 200 && response.body() != null) { String res = response.body().string(); + // extrect oauth_token from url Uri uri = Uri.parse(AUTHENTICATE + "?" + res); return uri.getQueryParameter("oauth_token"); }