diff --git tokenauth.inc tokenauth.inc
index d33e664..c9e2e47 100644
--- tokenauth.inc
+++ tokenauth.inc
@@ -61,6 +61,7 @@ function tokenauth_reset_user($uid = NULL, $token = NULL, $update = TRUE) {
   else {
     $return = drupal_write_record('tokenauth_tokens', $entry, 'uid');
   }
+  tokenauth_get_token($uid, TRUE);
   return $return === FALSE ? FALSE : $entry['token'];
 }
 
@@ -93,14 +94,18 @@ function tokenauth_insert($uid = NULL, $token = NULL) {
  *
  * @param string $uid 
  *  Assumes current user if no user is provided.
- * @return string
- *  A token, or NULL if user has no token.
+ * @return $reset
+ *  Whether to reset the internal cache.
  */
-function tokenauth_get_token($uid = NULL) {
+function tokenauth_get_token($uid = NULL, $reset = FALSE) {
+  static $tokens;
   if (is_null($uid)) {
     $uid = $GLOBALS['user']->uid;
   }
-  return db_result(db_query("SELECT tt.token FROM {tokenauth_tokens} tt WHERE tt.uid = %d", $uid));
+  if (!isset($tokens[$uid]) || $reset) {
+    $tokens[$uid] = db_result(db_query("SELECT tt.token FROM {tokenauth_tokens} tt WHERE tt.uid = %d", $uid));
+  }
+  return $tokens[$uid];
 }
 
 /**
