Объединение пользователей в Kinvey

Ситуация:

  1. Пользователь А регистрирует учетную запись в нашем приложении и входит в систему.
  2. По какой-либо причине выходит из системы.
  3. Повторно входит в приложение с помощью входа в социальную сеть Facebook с учетной записью, с которой связан тот же адрес электронной почты, что и при первоначальной регистрации.
  4. Для этого входа создается вторая учетная запись, и в системе существует 2 учетные записи.

Как я могу объединить эти учетные записи в одну учетную запись во время входа в социальную сеть (запрашивая существование этого электронного письма) автоматически или с помощью бизнес-хуков для сбора пользователей (если с бизнес-хуками, не могли бы вы привести пример того, как я это сделаю) поскольку документация в Интернете неясна для этой конкретной цели).

Заметки:

  • Кинви бэкенд
  • Phonegap с плагином facebook
  • Мобильный Jquery
  • Хотите объединить учетные записи или найти существующую учетную запись и добавить к ней социальную идентификацию во время входа в систему
  • Предположим, я не могу удалить пользователей
  • Желательно выполнить этот шаг с помощью PreSave Kinvey Business Logic Hook.

Ваше здоровье,


person Aidan    schedule 22.01.2016    source источник


Ответы (1)


Мне удалось создать свою собственную конечную точку, чтобы в основном добиться слияния пользователей.

Если пользователь существует с учетной записью kinvey, а затем пытается войти в систему с помощью facebook с адресом электронной почты, совпадающим с пользователем kinvey, я использовал следующий код конечной точки, чтобы добавить социальную идентификацию к существующему пользователю, прежде чем пытаться войти в систему с использованием этого пользователя ( Эта функция работала только потому, что мы поддерживаем гостевой логин для пользователей, не вошедших в систему).

Надеюсь, это поможет кому-то.

function onRequest(request, response, modules) {
  var users = modules.collectionAccess.collection('user');
  var social = request.body.social;
  users.findAndModify({"username":request.body.email},{$set:{"_socialIdentity":social}},
  function(err,result){
    if(err){
      response.error(err);
      response.complete();
    }else{
     if(!result._id){
       response.body = {message:"No User Found Matching This Email"};
       response.complete();
     }else{
       response.body = {message:"User Was Hopefully Updated"};
       response.complete();
     }
    }
  });
}
person Aidan    schedule 28.01.2016