问题

使用 SuiteScript 2.0 连接到一个 RESTlet 脚本

解决方案

任何与 NetSuite 的集成或非用户界面访问,如果使用管理员角色或其他高特权角色,需要使用两因素身份验证(2FA),或者需要调整为使用基于令牌的身份验证(TBA)。

设置要求

使用 RESTlets 的 TBA 所需数据

  • 对于本示例,假设已经实现了与 RESTlet 脚本的连接。要开始,您需要以下信息:
  • CONSUMER_KEY
  • CONSUMER_SECRET
  • TOKEN_ID
  • TOKEN_SECRET
  • URL
  • ACCOUNT_ID

代码

建议使用 Oauth 和 CryptoJS 这两个库
   1. 下载oauth.js and cryptojs.js  (或者从 github.com/mark-keaton/oauth-netsuite )
   2. 复制oauth.js 和cryptojs.js 到文件柜
   3. 创建secret.js 作为存放密钥的地方

示例secret.js

define([], function() {
    return {
        consumer: {
            public: '01234567890abcdef01234567890abcdef01234567890abcdef01234567890ab',
            secret: '01234567890abcdef01234567890abcdef01234567890abcdef01234567890ab'
        },
        token: {
            public: '01234567890abcdef01234567890abcdef01234567890abcdef01234567890ab',
            secret: '01234567890abcdef01234567890abcdef01234567890abcdef01234567890ab'
        },
        realm: '1234567'
    }
}); // realm == ACCOUNT_ID

脚本示例

define(['N/https', '/SuiteScripts/oauth', '/SuiteScripts/secret'], function(https, oauth, secret) {

    function execute(context) {
        var url     = 'https://rest.netsuite.com/app/site/hosting/restlet.nl?script=52&deploy=1&myParameter=11111';
        var method  = 'GET';
        var headers = oauth.getHeaders({
            url:         url,
            method:      method,
            tokenKey:    secret.token.public,
            tokenSecret: secret.token.secret
        });

        var body = {
            datum1: 'datum1',
            datum2: 'foobar'
        } //JSON.stringify(body)

        headers['Content-Type'] = 'application/json';

        var restResponse = https.get({
            url: url,
            headers: headers,
            body: JSON.stringify(body)
        });
        log.debug('response', JSON.stringify(restResponse));
        log.debug('headers', headers);
    }

    return {
        execute: execute
    }
});
// 别忘了ID script and deploy ID

在测试过程中,如果出现问题,系统可能会显示“Invalid Login attempt error”(无效的登录尝试错误)的错误或响应。在这种情况下,您可以使用“登录审计追踪”报告来收集更多详细信息。报告位于“Setup > Users / Roles > View Login Audit Trail”下。

在报告的“结果”选项卡中,您可以添加以下字段以获取更多信息:Detail(详细信息),’Token-based Application Name’(用于确认应用程序所发出的请求)和’Token-based Access Token Name’(基于令牌的访问令牌名称)。

Last modified: 15/07/2024

Author

Comments

Write a Reply or Comment

Your email address will not be published.