diff --git a/oauth.routing.yml b/oauth.routing.yml
index 55bda22..7e9cbf0 100644
--- a/oauth.routing.yml
+++ b/oauth.routing.yml
@@ -13,7 +13,7 @@ oauth.user_consumer:
     _permission: 'access own consumers'
 
 oauth.user_consumer_add:
-  path: '/oauth/consumer/add'
+  path: '/oauth/consumer/add/{user}'
   defaults:
     _form: '\Drupal\oauth\Form\OAuthAddConsumerForm'
     _title: 'Add an OAuth Consumer'
diff --git a/src/Controller/OAuthController.php b/src/Controller/OAuthController.php
index fad4e14..556c610 100644
--- a/src/Controller/OAuthController.php
+++ b/src/Controller/OAuthController.php
@@ -73,7 +73,7 @@ class OAuthController extends ControllerBase implements ContainerInjectionInterf
   public function consumers(UserInterface $user) {
     $list = array();
 
-    $list['heading']['#markup'] = $this->linkGenerator->generate($this->t('Add consumer'), Url::fromRoute('oauth.user_consumer_add'));
+    $list['heading']['#markup'] = $this->linkGenerator->generate($this->t('Add consumer'), Url::fromRoute('oauth.user_consumer_add', array('user' => $user->id())));
 
     // Get the list of consumers.
     $result = $this->connection->query('select * from {oauth_consumer} where uid = :uid', array(':uid' => $user->id()));
diff --git a/src/Form/OAuthAddConsumerForm.php b/src/Form/OAuthAddConsumerForm.php
index 38a3715..c07c76e 100644
--- a/src/Form/OAuthAddConsumerForm.php
+++ b/src/Form/OAuthAddConsumerForm.php
@@ -10,6 +10,7 @@ namespace Drupal\oauth\Form;
 use Drupal\Core\Database\Connection;
 use Drupal\Core\Form\FormBase;
 use Drupal\Core\Form\FormStateInterface;
+use Drupal\Core\Session\AccountInterface;
 use Drupal\Core\Session\AccountProxyInterface;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 
@@ -69,11 +70,16 @@ class OAuthAddConsumerForm extends FormBase {
   /**
    * {@inheritdoc}
    */
-  public function buildForm(array $form, FormStateInterface $form_state) {
+  public function buildForm(array $form, FormStateInterface $form_state, AccountInterface $user = NULL) {
+
     $form['save'] = array(
       '#type' => 'submit',
       '#value' => $this->t('Add'),
     );
+    $form['uid'] = array(
+      '#type' => 'hidden',
+      '#value' => $user->id()
+    );
 
     return $form;
   }
@@ -85,17 +91,20 @@ class OAuthAddConsumerForm extends FormBase {
     $consumer_key = user_password(32);
     $consumer_secret  = user_password(32);
     $key_hash = sha1($consumer_key);
+    $uid = $form_state->getValue('uid');
     $this->connection->insert('oauth_consumer')
       ->fields(array(
-        'uid' => $this->account->id(),
+        'uid' => $uid,
         'consumer_key' => $consumer_key,
         'consumer_secret' => $consumer_secret,
         'key_hash' => $key_hash,
       ))
       ->execute();
 
-    drupal_set_message($this->t('Added a new consumer.'));
-    $form_state->setRedirect('oauth.user_consumer', array('user' => \Drupal::currentUser()->id()));
+    // So strange - keys end up in the DB with the correct UID, in the next 2 lines, I see the correct UID in the drupal_set_message() and get redirected to the correct user, but no keys visible on the page.
+
+    drupal_set_message($this->t('Added a new consumer for uid: ' . $uid));
+    $form_state->setRedirect('oauth.user_consumer', array('user' => $uid));
   }
 
 }
