2017-01-15 13 views
0

Я новичок в написании NS Suitelet.Netsuite Suitelet - Действительный сеанс

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

Для внешнего suitelet (loginform.js):

  • Я использую https://rest.netsuite.com/rest/roles и передать имя пользователя и пароль в форме.
  • Получаю код ответа 200 и NS возвращает учетные данные для пользователя.
  • на пост я использую nlapiRequestURL(url) где url является конечной точкой внутренней suitelet

Для внутреннего suitelet (verify.js)

  • простая функция { var login = nlapiGetLogin(); }
  • так, если Логин не null, то пользователь зарегистрирован в

Итак, если я вхожу в систему Netsuite и выполняю Внутренний пакет, я получаю действительный объект входа.

Но если внешний набор пакетов вызывает внутренний пакет, он будет вызывать ошибку доступа к разрешению.

Что мне здесь не хватает? Я знаю, что у меня, вероятно, нет «действительной сессии».

Я вижу, что эта «действительная сессия» много упоминается в руководстве разработчика, но нигде не объясняет, как создать или получить этот сеанс.

Пожалуйста, помогите мне создать или получить эту действительную сессию NS.

+0

Что вы подразумеваете под «внешним набором»? По определению все дистрибутивы являются сценариями на стороне сервера. – k1komans

+0

Кроме того, вы проверили запись развертывания сценария своего внешнего набора? Необходимо убедиться, что «Выполнять роль» имеет соответствующие разрешения для выполнения того, что вы хотите. – k1komans

ответ

0

Внутренние прошивки требуют, чтобы пользователь аутентифицировался. В этом случае внешний набор (Netsuite) вызывает внутренний Suitelet (также Netsuite), а поскольку внешний наборлет никогда не аутентифицировался, он не будет загружаться. Процесс аутентификации для Suitelets предназначен для использования браузерами, поскольку он работает на веб-интерфейсе и устанавливает файл cookie.

Вам необходимо сделать так, чтобы оба Suitelet были внешними, чтобы они могли звонить друг другу, вы можете добавить заголовок аутентификации для защиты соединения.

В качестве альтернативы я бы предложил использовать только один внутренний пакет и не должен иметь Netsuite для входа в систему/auth, установив пользователей как клиентов, предоставив им доступ и сделав развертывание Suitelet доступным для роли клиента. Вы даже можете обойти разрешения для клиентов, установив в качестве приложения Suitelet роль администратора. Если вы не хотите, чтобы каждый клиент имел доступ к Suitelet, тогда просто установите пользовательское поле в записи клиента, чтобы указать, имеет ли пользователь доступ к нему.