2016-12-08 4 views
0

Я изучаю создание сервера сервера без сервера с использованием AWS лямбда, dynamodb, cogito sync. Все шло хорошо, пока я не смутился с таблицей users.Создание пользователя с использованием AWS cognito identity

Так что, в основном, я пытаюсь сделать твитерский клон API. Так как пользователь должен иметь возможность создавать сообщения, следовать за другими пользователями и т. Д.

Регистрация и подпись успешно обрабатываются Cognito Identity, проблема в том, как получить доступ к данным Users на cognito? Пользователь может иметь атрибуты following и followers, которые содержат другие идентификаторы пользователей.

Что я сделал в настоящее время, в приложении, которое я регистрирую, используя идентификатор cognito, тогда я сделаю еще один вызов API-шлюза, чтобы создать user на dynamodb. Таким образом, в основном есть две отдельные данные пользователей. Я не уверен, что это правильный способ сделать это.

Должен ли я позвонить по телефону cognito на бэкэнд вместо приложения? Должен ли я иметь отдельную таблицу users?

Пример Front End код на ionic

$scope.signup = function() { 
    $ionicLoading.show({ 
    template: 'Registering user...' 
    }); 
    // this is the factory for signing up 
    awsCognitoIdentityFactory.signUp($scope.user.email, $scope.user.name, $scope.user.email, $scope.user.password, 
    function(err, result) { 
     if (err) { 
     errorHandler(err); 
     return false; 
     } 
     // creating user on the api 
     User.create($scope.user).then(function(response) { 
     console.log(response); 
     }); 
     // store locally 
     store.set('user', $scope.user); 

     $ionicLoading.hide(); 
     $scope.$apply(); 

     $scope.user = {}; //clear register form 
     $state.go('confirmation'); 
    }); 
    return true; 
}; 

ответ

0

Это звучит, как вы используете Cognito пользователя Пулы, в этом случае вы можете использовать GetUser API. Учитывая контекст для пользователя, он вернет все атрибуты, хранящиеся у этого пользователя.

Я не могу прокомментировать лучший способ хранения пользовательских метаданных, поскольку он будет сильно отличаться в зависимости от специфики и потребностей вашего приложения, но, вероятно, стоит прочитать систему Cognito custom attributes, которая позволяет хранить пользовательские данные против пользователей. Их можно настроить/добавить с консоли Cognito.

+0

yes, correct Я пользовательские пулы пользователей cognito. Этот API-интерфейс GetUser, который вы упомянули, работает только тогда, когда я получаю текущий пользователь? А если я хочу увидеть профиль других людей? Также я проверил, что пользовательские атрибуты сохраняют только 'String | Номер | DateTime | Boolean' Что делать, если я хочу хранить массив, например 'последователи' или' друзья'? – danggrianto

+0

Правильно, пользователь не может использовать это для другого пользователя. Существует административная версия этого API, однако это идеально не будет использоваться в самом приложении. Это примерно то, что я имел в виду, в зависимости от потребностей ваших приложений. Cognito не поддерживает использование одного пользователя, который видит другие атрибуты, но это можно сделать с помощью внешнего хранилища данных, дополняющего то, что Cognito уже делает. Набор последователей/друзей может быть выполнен с именем пользователя или «под» (уникальный идентификатор пользователя) в массиве, сериализованным в строку. Однако это также можно было бы поместить во внешний хранилище данных. –

Смежные вопросы