繁体   English   中英

获取 NetSuite 的授权 url

[英]Get authorized url of NetSuite

我需要通过 SFDC 登录访问 Netsuite 中的销售订单。 我已经有了获取销售订单号的代码。 我的问题是我需要生成 URL 以从销售人员重定向到 NetSuite 中的销售订单。 这需要通过suitescript 获取url ' https://system.na1.netsuite.com '。 url 中的“na1”代表北美,这会根据国家/地区的不同而改变 url。 因此,通过将电子邮件 ID、密码传递到实际登录地址“ https://system.netsuite.com/pages/customerlogin.jsp ”,我需要获得授权的 url。 nlapiResolveURL(type, identifier, id, displayMode)即时为 url 的后面部分创建一个 URL。

请问有什么想法或解决方案吗?

扩展@egrubaugh360 发布的答案,以获取基本域,这是一个示例。

    var credentials = {
        email: "netsuiteEmail@example.com",
        account: "1234567",
        role: "25",
        password: "secretPassword",
    };
    
    //Setting up URL              
    var url = "https://rest.netsuite.com/rest/roles";
                    
    //Setting up Headers 
    var headers = {"User-Agent-x": "SuiteScript-Call",
                   "Authorization": "NLAuth nlauth_account=" + credentials.account + ", nlauth_email=" + credentials.email + 
                                    ", nlauth_signature= " + credentials.password + ", nlauth_role=" + credentials.role,
                   "Content-Type": "application/json"};
    
    var response = nlapiRequestURL(url, null, headers);
    var results = JSON.parse(response.body);
    var domain = results[0].dataCenterURLs.systemDomain;

此外,除了systemDomainrestDomainwebservicesDomain也可用。 这是从 NetSuite 调用 RESTlet 的示例,但它可以用任何语言完成。

如果您已经从 RESTlet 检索 ID,只需将 URL 添加到您从 RESTlet 返回的对象。 正如您所指出的,您应该能够使用nlapiResolveURL生成 URL。 它应该是这样的:

var url = nlapiResolveURL('RECORD', 'salesorder', 1234);

其中1234是实际的销售订单 ID。 这会将url设置为类似

/app/accounting/transactions/salesorder.nl?id=1234

为了获得基本域,除了使用 RESTlet 之外,您还需要使用 NetSuite 的角色服务 您可以查看标题为使用 REST 角色服务获取用户帐户、角色和域的 NetSuite 帮助文档。 这实际上只是 NetSuite 提供的一个 RESTlet,它允许您传入用户名和密码,并将返回给您该用户有权访问的所有帐户和角色。 结果通过restDomain属性包括该帐户的正确 REST 域。

此外,为了澄清na1 ,URL 中的na1不一定会根据国家/地区而变化,而是更具体地基于托管该客户帐户的数据中心

对于这样的事情,我通常会做的是创建一个 Suitelet 或 RESTLet 来返回所有订单信息。 RESTLet 可以以 JSON 格式返回订单详细信息,您可以使用它以您自己的视图格式化订单。

可以生成通过可共享 URL 访问的 Suitelet,其中 URL 查询字符串的一部分是订单内部 ID(或订单号)和限时访问令牌。

您可以非常轻松地使用 Netsuite 的脚本化模板来显示格式化的销售订单。 如果您出于某种原因需要编辑订单,事情就会变得有点棘手。 使用 Suitelet 可以更有效地完成较小的编辑(例如批准/拒绝和原因代码),但如果您希望人们能够进行任意编辑,那么您需要让您的套件登录并将它们重定向到客户中央。

到目前为止,最好的方法是对身份验证部分使用 SAML 或入站单点登录。 看起来您应该能够使用 OpenId 来访问客户中心,但我还没有这样做,所以不知道这条路线可能会遇到什么陷阱。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM