Как JWT работает в Smooch iOS?

Я играю с Smooch SDK. Мой вопрос о том, как JWT работает в Smooch iOS?

В настоящее время у меня есть 1 приложение, и если я хочу использовать Smooch на основе идентификатора пользователя (например, 1 приложение имеет 50 пользователей для общения с ним), нам нужно создать только 50 JWT или 1 JWT?

    [Smooch login:self.smoochUserId jwt:@"WHAT IS THIS"];

Спасибо


person Abadi    schedule 23.11.2017    source источник
comment
Эта проблема может ответить на некоторые из ваших вопросов, касающихся JWT, и включает внешние ссылки на дополнительную документацию github. com/smooch/smooch-ios/issues/168   -  person michaels    schedule 23.11.2017


Ответы (1)


В основном в старых версиях Smooch нет такой функции, как пользователь не может получить доступ к одному и тому же разговору с нескольких устройств.

т.е., если один пользователь вошел в систему на одном устройстве и когда второй пользователь вошел в систему на том же устройстве, то

  • Второй пользователь может видеть чаты первого пользователя и
  • Второй пользователь не может видеть свои старые чаты, если он ранее входил в систему с другого устройства.

Чтобы решить эту проблему, Smooch представляет новый метод, который вы отметили выше, с JWT (веб-токен JSON). Подробнее об этом можно прочитать здесь.

do we need to generate 50 JWT or 1 JWT only?

Вам необходимо сгенерировать JWT на стороне сервера для каждого пользователя на основе его идентификатора пользователя (из вашего база данных).

Если вы решили пойти по этому пути, вам нужно создать этот токен JWT с зарегистрированным идентификатором пользователя и назначить этот токен Smooch через

[Smooch login:@"user-id" jwt:@"jwt" completionHandler:^(NSError * _Nullable error, NSDictionary * _Nullable userInfo) {
    // Your code after login is complete
}];

Это немного сложно сделать. Есть еще один способ сделать это.

Найдите образец кода node.js по ссылке1, которую я отправил, и передайте его своему внутреннему серверу. И попросите их создать для каждого пользователя, чтобы вы могли получить этот токен JWT с моделью пользователя (который вы получите после успешного входа в систему). Добавьте это прямо к Smooch.

Примечание. Если вам не нужны данные о существующих пользователях в чате, вы можете использовать Smooch без добавления токена jwt, подобного этому.

[Smooch initWithSettings:[SKTSettings settingsWithAppId:@"Your App token(Get it from Smooch dashboard)"] completionHandler:^(NSError * _Nullable error, NSDictionary * _Nullable userInfo) {}
[[SKTUser currentUser] addProperties:@{@"Company":[[NSUserDefaults standardUserDefaults] valueForKey:@"company"],@"UserId":[[NSUserDefaults standardUserDefaults] valueForKey:@"empid"]}];
[Smooch show];
person Himanth    schedule 23.11.2017
comment
Пожалуйста, не подписывайте JWT на клиентском устройстве в Swift или Objective-C. Это подразумевает распространение секретного ключа вашего приложения с вашим мобильным приложением, по существу предоставляя всем вашим пользователям доступ ко всему вашему приложению Smooch (включая интеграции, веб-перехватчики, историю разговоров и информацию о профиле каждого пользователя и т. д.). JWT должны быть подписаны на вашем сервере и переданы на клиентское устройство. - person michaels; 23.11.2017
comment
^ Пока мы пытаемся уменьшить путаницу, я пошел дальше и отредактировал этот ответ, удалив предложение использовать библиотеку Obj-C JWT. - person Andrew Lavers; 23.11.2017
comment
@michaels проблема в том, что пользователь smooch создается, когда мобильный телефон отправляет первое сообщение Smooch. В это время серверная часть ничего не знает о новом пользователе smooch, поэтому серверная часть все равно не может сгенерировать. можно узнать как пройти правильно? Или пример кода node.js является одним из способов? - person Abadi; 24.11.2017
comment
@Abadi, если ваше приложение имеет процесс входа в систему, тогда вы должны и должны ли вы сохранять эти учетные данные на внутреннем сервере в БД. По умолчанию, когда они регистрируются в вашем приложении, ваш сервер может генерировать токен jwt. - person Himanth; 24.11.2017
comment
Хорошо, я понял .. я разговаривал со своим бэкэндом, они думали, что идентификатор пользователя smooch исходит от smooch, а не от нас .. спасибо @Himanth - person Abadi; 24.11.2017
comment
и @michaels, и himant помогают мне, поэтому я отмечу ответ himanth, поскольку ответ bcs michaels находится в разделе комментариев :) - person Abadi; 24.11.2017