Skip to content

Commit 16af0bf

Browse files
authored
Calculating the token refresh interval (firebase#27)
1 parent 3518c83 commit 16af0bf

1 file changed

Lines changed: 12 additions & 2 deletions

File tree

src/main/java/com/google/firebase/FirebaseApp.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import com.google.firebase.internal.FirebaseExecutors;
3434
import com.google.firebase.internal.FirebaseService;
3535
import com.google.firebase.internal.GetTokenResult;
36+
import com.google.firebase.internal.Log;
3637
import com.google.firebase.internal.NonNull;
3738
import com.google.firebase.internal.Nullable;
3839
import com.google.firebase.tasks.Continuation;
@@ -339,7 +340,8 @@ Task<GetTokenResult> getToken(boolean forceRefresh) {
339340
@Override
340341
public GetTokenResult then(@NonNull Task<GoogleOAuthAccessToken> task)
341342
throws Exception {
342-
GetTokenResult newToken = new GetTokenResult(task.getResult().getAccessToken());
343+
GoogleOAuthAccessToken googleOAuthToken = task.getResult();
344+
GetTokenResult newToken = new GetTokenResult(googleOAuthToken.getAccessToken());
343345
GetTokenResult oldToken = currentToken.get();
344346
List<AuthStateListener> listenersCopy = null;
345347
if (!newToken.equals(oldToken)) {
@@ -353,7 +355,15 @@ public GetTokenResult then(@NonNull Task<GoogleOAuthAccessToken> task)
353355
// access to the token refresher.
354356
if (currentToken.compareAndSet(oldToken, newToken)) {
355357
listenersCopy = ImmutableList.copyOf(authStateListeners);
356-
tokenRefresher.scheduleRefresh(TOKEN_REFRESH_INTERVAL_MILLIS);
358+
long refreshDelay = googleOAuthToken.getExpiryTime() - clock.now()
359+
- TimeUnit.MINUTES.toMillis(5);
360+
if (refreshDelay > 0) {
361+
tokenRefresher.scheduleRefresh(refreshDelay);
362+
} else {
363+
Log.w("FirebaseApp", "Token expiry ("
364+
+ googleOAuthToken.getExpiryTime() + ") is less than 5 minutes in the "
365+
+ "future. Not scheduling a proactive refresh.");
366+
}
357367
}
358368
}
359369
}

0 commit comments

Comments
 (0)