获取NetSuite的授权网址

时间:2015-04-23 09:08:00

标签: javascript salesforce netsuite

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

请问任何想法或解决方案?

3 个答案:

答案 0 :(得分:3)

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

function credentials(){
        this.email = "netsuiteEmail@example.com";
        this.account = "1234567";
        this.role = "25";
        this.password = "secretPassword";
    }

    //Setting up URL              
    var url = "https://rest.netsuite.com/rest/roles";

    //Calling credential function
    var cred = new credentials();

    //Setting up Headers 
    var headers = {"User-Agent-x": "SuiteScript-Call",
                   "Authorization": "NLAuth nlauth_account=" + cred.account + ", nlauth_email=" + cred.email + 
                                    ", nlauth_signature= " + cred.password + ", nlauth_role=" + cred.role,
                   "Content-Type": "application/json"};

    var response = nlapiRequestURL(url, null, headers);
    var results = JSON.parse(response.body);
    var domain = results[0].dataCenterURLs.systemDomain;

此外,还可以使用systemDomainrestDomain代替webservicesDomain。这是从NetSuite调用RESTlet的示例,但它可以使用任何语言完成。

答案 1 :(得分:2)

如果您已经从RESTlet中检索ID,只需从RESTlet将URL添加到返回对象即可。您应该能够使用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不一定会根据国家/地区更改,更具体地说,基于该客户端上的数据中心帐户已托管。

答案 2 :(得分:0)

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

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

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

到目前为止,最好的方法是使用SAML或入站单点登录进行身份验证。看起来您应该能够通过OpenId访问客户中心,但我还没有完成,所以不知道可能会出现哪些陷阱。