diff --git a/simple_fb_connect.services.yml b/simple_fb_connect.services.yml
index 513102f..527c271 100644
--- a/simple_fb_connect.services.yml
+++ b/simple_fb_connect.services.yml
@@ -19,6 +19,7 @@ services:
       - '@entity_field.manager'
       - '@token'
       - '@transliteration'
+      - '@simple_fb_connect.persistent_data_handler'
 
   simple_fb_connect.post_login_manager:
     class: Drupal\simple_fb_connect\SimpleFbConnectPostLoginManager
diff --git a/src/Controller/SimpleFbConnectController.php b/src/Controller/SimpleFbConnectController.php
index 21adc95..5741112 100644
--- a/src/Controller/SimpleFbConnectController.php
+++ b/src/Controller/SimpleFbConnectController.php
@@ -134,9 +134,7 @@ class SimpleFbConnectController extends ControllerBase {
 
     // If we have an existing user with the same email address, try to log in.
     if ($drupal_user = $this->userManager->loadUserByProperty('mail', $email)) {
-      if ($this->userManager->loginUser($drupal_user)) {
-        // Save user's access token to session for other modules.
-        $this->persistentDataHandler->set('access_token', $access_token);
+      if ($this->userManager->loginUser($drupal_user, $access_token)) {
         // Redirect the user to post login path.
         return new RedirectResponse($this->postLoginManager->getPostLoginPath());
       }
@@ -147,7 +145,7 @@ class SimpleFbConnectController extends ControllerBase {
 
     // If there was no existing user, try to create a new user.
     $fbid = $fb_profile->getField('id');
-    if ($drupal_user = $this->userManager->createUser($fb_profile->getField('name'), $email, $fbid)) {
+    if ($drupal_user = $this->userManager->createUser($fb_profile->getField('name'), $email, $fbid, $access_token)) {
 
       // Download profile picture for the newly created user.
       if ($picture_url = $this->fbManager->getFbProfilePicUrl()) {
@@ -155,9 +153,7 @@ class SimpleFbConnectController extends ControllerBase {
       }
 
       // Log the newly created user in.
-      if ($this->userManager->loginUser($drupal_user)) {
-        // Save user's access token to session for other modules.
-        $this->persistentDataHandler->set('access_token', $access_token);
+      if ($this->userManager->loginUser($drupal_user, $access_token)) {
         // Check if new users should be redirected to Drupal user form.
         if ($this->postLoginManager->getRedirectNewUsersToUserFormSetting()) {
           drupal_set_message(t("Please check your account details. Since you logged in with Facebook, you don't need to update your password."));
diff --git a/src/SimpleFbConnectUserManager.php b/src/SimpleFbConnectUserManager.php
index 4af9909..74afc74 100644
--- a/src/SimpleFbConnectUserManager.php
+++ b/src/SimpleFbConnectUserManager.php
@@ -30,6 +30,7 @@ class SimpleFbConnectUserManager {
   protected $entityFieldManager;
   protected $token;
   protected $transliteration;
+  protected $persistentDataHandler;
 
   /**
    * Constructor.
@@ -50,8 +51,10 @@ class SimpleFbConnectUserManager {
    *   Used for token support in Drupal user picture directory.
    * @param \Drupal\Core\Transliteration\PhpTransliteration $transliteration
    *   Used for user picture directory and file transiliteration.
+   * @param \Drupal\simple_fb_connect\SimpleFbConnectPersistentDataHandler $persistent_data_handler
+   *   SimpleFbConnectPersistentDataHandler object.
    */
-  public function __construct(ConfigFactoryInterface $config_factory, LoggerChannelFactoryInterface $logger_factory, TranslationInterface $string_translation, EventDispatcherInterface $event_dispatcher, EntityTypeManagerInterface $entity_type_manager, EntityFieldManagerInterface $entity_field_manager, Token $token, PhpTransliteration $transliteration) {
+  public function __construct(ConfigFactoryInterface $config_factory, LoggerChannelFactoryInterface $logger_factory, TranslationInterface $string_translation, EventDispatcherInterface $event_dispatcher, EntityTypeManagerInterface $entity_type_manager, EntityFieldManagerInterface $entity_field_manager, Token $token, PhpTransliteration $transliteration, SimpleFbConnectPersistentDataHandler $persistent_data_handler) {
     $this->configFactory      = $config_factory;
     $this->loggerFactory      = $logger_factory;
     $this->stringTranslation  = $string_translation;
@@ -60,6 +63,7 @@ class SimpleFbConnectUserManager {
     $this->entityFieldManager = $entity_field_manager;
     $this->token              = $token;
     $this->transliteration    = $transliteration;
+    $this->persistentDataHandler = $persistent_data_handler;
   }
 
   /**
@@ -100,12 +104,14 @@ class SimpleFbConnectUserManager {
    *   User's email address.
    * @param int $fbid
    *   User's Facebook ID.
+   * @param $access_token
+   *   User's access token from Facebook
    *
-   * @return \Drupal\user\Entity\User|false
-   *   Drupal user account if user was created
-   *   False otherwise
+   * @return User|false Drupal user account if user was created
+   * Drupal user account if user was created
+   * False otherwise
    */
-  public function createUser($name, $email, $fbid) {
+  public function createUser($name, $email, $fbid, $access_token = null) {
     // Make sure we have everything we need.
     if (!$name || !$email) {
       $this->loggerFactory
@@ -157,6 +163,11 @@ class SimpleFbConnectUserManager {
     try {
       $new_user->save();
 
+      // Save user access token to session for other modules.
+      if ($access_token) {
+        $this->persistentDataHandler->set('access_token', $access_token);
+      }
+
       $this->loggerFactory
         ->get('simple_fb_connect')
         ->notice('New user created. Username @username, UID: @uid', array('@username' => $new_user->getAccountName(), '@uid' => $new_user->id()));
@@ -189,11 +200,14 @@ class SimpleFbConnectUserManager {
    * @param \Drupal\user\Entity\User $drupal_user
    *   User object.
    *
-   * @return bool
-   *   True if login was successful
-   *   False if the login was blocked
+   * @param $access_token
+   *   User's access token from Facebook
+   *
+   * @return bool True if login was successful
+   * True if login was successful
+   * False if the login was blocked
    */
-  public function loginUser(User $drupal_user) {
+  public function loginUser(User $drupal_user, $access_token = null) {
     // Prevent admin login if defined in module settings.
     if ($this->loginDisabledForAdmin($drupal_user)) {
       $this->drupalSetMessage($this->t('Facebook login is disabled for site administrator. Login with your local user account.'), 'error');
@@ -210,6 +224,11 @@ class SimpleFbConnectUserManager {
     if ($drupal_user->isActive()) {
       $this->userLoginFinalize($drupal_user);
 
+      // Save user's access token to session for other modules.
+      if($access_token){
+        $this->persistentDataHandler->set('access_token', $access_token);
+      }
+
       // Dispatch an event so that other modules can react to the user login.
       // Set the account twice on the event: as the main subject but also in the
       // list of arguments.
