@@ -211,28 +211,31 @@ public static void verifyIdTokenCheckRevoked(String idToken) throws InterruptedE
211211 // [START verify_id_token_check_revoked]
212212 // Note the second parameter, checkRevoked set to true.
213213 try {
214- FirebaseToken decodedToken = FirebaseAuth .getInstance ().verifyIdTokenAsync (idToken , true ).get ();
214+ FirebaseToken decodedToken = FirebaseAuth .getInstance ().verifyIdTokenAsync (idToken , true ).get ();
215+ String uid = decodedToken .getUid ();
215216 }
216217 catch (FirebaseAuthException e ) {
217218 if (FirebaseUserManager .ID_TOKEN_REVOKED_ERROR == e .getErrorCode ()) {
218219 // Token is valid but has been revoked.
219220 // When this occurs, inform the user to reauthenticate or signOut() the user.
221+ } else {
222+ // Error is other than "revoked" token is invalid.
220223 }
221-
222-
223224 }
224-
225- String uid = decodedToken .getUid ();
226225 // [END verify_id_token_check_revoked]
227226 System .out .println ("Decoded ID token from user: " + uid );
228227 }
229228
230229 public static void revokeIdTokens (String idToken ) throws InterruptedException , ExecutionException {
230+ String uid ="someUid" ;
231231 // [START revoke_tokens]
232- // idToken comes from the client app (shown above)
233- FirebaseToken decodedToken = FirebaseAuth .getInstance ().verifyIdTokenAsync (idToken ).get ();
234- String uid = decodedToken .getUid ();
235-
232+ FirebaseToken decodedToken = FirebaseAuth .getInstance ().revokeRefreshTokens (uid ).get ();
233+ UserRecord user = FirebaseAuth .getInstance ().getUserAsync (uid ).get ();
234+ long revocationSecond = user .getTokensValidAfterTimestamp () / 1000 ;
235+
236+ final FirebaseDatabase database = FirebaseDatabase .getInstance ();
237+ DatabaseReference ref = database .getReference ("metadata/" + uid );
238+ ref .setValueAsync (MapBuilder .of ("revokeTime" , revocationSecond ));
236239 // [END revoke_tokens]
237240 System .out .println ("Decoded ID token from user: " + uid );
238241 }
0 commit comments