diff --git a/oauthconnector.module b/oauthconnector.module
index 3935758..dab58b0 100644
--- a/oauthconnector.module
+++ b/oauthconnector.module
@@ -309,6 +309,27 @@ function oauthconnector_oauth_common_authorized($consumer, $access_token, $reque
         //$access_token->delete();
         $external_uid = _oauthconnector_fetch_field('uid', $provider, $access_token, $consumer);
 
+        $username = NULL;
+        // Figure out related user to incoming connection.
+        $query = db_select('oauthconnector_connections', 'c');
+        $query->leftJoin('oauth_common_token', 't', 't.tid=c.tid');
+
+        $query->fields('c', array('tid', 'cid'))
+          ->addField('t', 'uid', 'uid');
+        $query->addField('t', 'csid', 'csid');
+
+        $query->condition('c.cid', $external_uid, '=');
+        $query->condition('t.type', '1', '=');
+
+        $results = $query->execute();
+
+        while ($result = $results->fetch()) {
+          if ($provider->pid == $result->csid) {
+            $account = user_load($result->uid);
+            $username = $account->name;
+          }
+        }
+
         if (!empty($external_uid)) {
           $connect = FALSE;
           if (empty($_SESSION['oauthconnector_login'])) {
@@ -323,8 +344,22 @@ function oauthconnector_oauth_common_authorized($consumer, $access_token, $reque
               $connect = $action['login callback']('oauthconnector_' . $provider->name, $external_uid, $consumer, $access_token, $request_token);
             }
             if (is_null($connect) && !empty($action['create account callback']) && is_callable($action['create account callback'])) {
+              // Check for defined mapping for the creation of the username.
+              if (!empty($provider->mapping['fields']['name']['field'])) {
+                $username = _oauthconnector_fetch_field($provider->mapping['fields']['name']['field'], $provider, $access_token, $consumer_token);
+                // Generates extension for used names.
+                $temp_username = $username;
+                $count = 2;
+                while (user_load_by_name($temp_username)) {
+                  $temp_username = $username  . '_' . $count;
+                  $count++;
+                }
+                $username = $temp_username;
+                unset($count);
+                unset($temp_username);
+              }
               // Login failed, let us try to create an account and then connect -> login.
-              $account = $action['create account callback']('oauthconnector_' . $provider->name, $external_uid, $consumer, $access_token, $request_token);
+              $account = $action['create account callback']('oauthconnector_' . $provider->name, $external_uid, $consumer, $access_token, $request_token, $username);
               if (!empty($account->uid) && !empty($action['add connection callback']) && is_callable($action['add connection callback'])) {
                 $action['add connection callback']('oauthconnector_' . $provider->name, $external_uid, $account->uid);
               }
