From e19dd8c31f2128b77ee08c8475919829b89d5e4f Mon Sep 17 00:00:00 2001 From: Alex Ning Date: Wed, 20 Jan 2021 23:22:26 +0800 Subject: Make OAuth2 API change: https://www.reddit.com/r/redditdev/comments/kvzaot/oauth2_api_changes_upcoming/ --- .../infinityforreddit/AccessTokenAuthenticator.java | 5 +++-- .../docilealligator/infinityforreddit/PullNotificationWorker.java | 7 ++++--- .../ml/docilealligator/infinityforreddit/account/AccountDao.java | 4 ++-- 3 files changed, 9 insertions(+), 7 deletions(-) (limited to 'app/src/main/java/ml/docilealligator') diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/AccessTokenAuthenticator.java b/app/src/main/java/ml/docilealligator/infinityforreddit/AccessTokenAuthenticator.java index 19407839..3c912221 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/AccessTokenAuthenticator.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/AccessTokenAuthenticator.java @@ -69,9 +69,10 @@ class AccessTokenAuthenticator implements Authenticator { try { retrofit2.Response response = accessTokenCall.execute(); if (response.isSuccessful() && response.body() != null) { - JSONObject jsonObject = new JSONObject((String) response.body()); + JSONObject jsonObject = new JSONObject(response.body()); String newAccessToken = jsonObject.getString(APIUtils.ACCESS_TOKEN_KEY); - mRedditDataRoomDatabase.accountDao().changeAccessToken(account.getUsername(), newAccessToken); + String newRefreshToken = jsonObject.getString(APIUtils.REFRESH_TOKEN_KEY); + mRedditDataRoomDatabase.accountDao().updateAccessTokenAndRefreshToken(account.getUsername(), newAccessToken, newRefreshToken); return newAccessToken; } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/PullNotificationWorker.java b/app/src/main/java/ml/docilealligator/infinityforreddit/PullNotificationWorker.java index 538c4a2c..561f393b 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/PullNotificationWorker.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/PullNotificationWorker.java @@ -245,11 +245,12 @@ public class PullNotificationWorker extends Worker { Call accessTokenCall = api.getAccessToken(APIUtils.getHttpBasicAuthHeader(), params); try { - Response response = accessTokenCall.execute(); + Response response = accessTokenCall.execute(); if (response.isSuccessful() && response.body() != null) { - JSONObject jsonObject = new JSONObject(response.body().toString()); + JSONObject jsonObject = new JSONObject(response.body()); String newAccessToken = jsonObject.getString(APIUtils.ACCESS_TOKEN_KEY); - mRedditDataRoomDatabase.accountDao().changeAccessToken(account.getUsername(), newAccessToken); + String newRefreshToken = jsonObject.getString(APIUtils.REFRESH_TOKEN_KEY); + mRedditDataRoomDatabase.accountDao().updateAccessTokenAndRefreshToken(account.getUsername(), newAccessToken, newRefreshToken); return newAccessToken; } return ""; diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/account/AccountDao.java b/app/src/main/java/ml/docilealligator/infinityforreddit/account/AccountDao.java index 076f76f1..0f214f85 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/account/AccountDao.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/account/AccountDao.java @@ -50,6 +50,6 @@ public interface AccountDao { @Query("UPDATE accounts SET is_current_user = 1 WHERE username = :username") void markAccountCurrent(String username); - @Query("UPDATE accounts SET access_token = :accessToken WHERE username = :username") - void changeAccessToken(String username, String accessToken); + @Query("UPDATE accounts SET access_token = :accessToken, refresh_token = :refreshToken WHERE username = :username") + void updateAccessTokenAndRefreshToken(String username, String accessToken, String refreshToken); } -- cgit v1.2.3