在实例 A 上的应用程序中,您需要为要连接的每个实例保存 OAUTH 凭证。
https://docs.servicenow.com/bundle/paris-servicenow-platform/page/product/meeting-extensibility/task/create-app-registry-meeting-extensibility.html
在您的应用程序中,根据您要连接的实例,您需要为该实例使用正确的凭据。
不能为多个实例重用相同的 OAUTH 令牌,因为可以重用相同的 username:password 组合和基本身份验证。
但是,您可以为每个连接创建一个 oauth_entity_profile。然后,在发送请求之前,您会在实例列表上请求循环,然后注入正确的身份验证。
https://developer.servicenow.com/dev.do#!/reference/api/rome/server/sn_ws-namespace/c_RESTMessageV2API#r_RMV2-setAuthenticationProfile_S_S
同时还使用以下方法为给定实例调用正确的 url:
https ://developer.servicenow.com/dev.do#!/reference/api/rome/server/sn_ws-namespace/c_RESTMessageV2API#r_RESTMessageV2_setEndpoint_String_endpoint
var instances = [{name: 'instance_x', oauth_id: '2394829384..'}, {name: 'instance_y', oauth_id: '2394829384..'};
for (var i = 0; i < instances.length; i++){
var inst = instances[i];
var sm = new sn_ws.RESTMessageV2("<REST_message_record>", "get");
//set auth profile to an OAuth 2.0 profile record.
sm.setAuthenticationProfile('oauth2', inst.oauth_id);
sm.setEndpoint("http://web.service.endpoint");
//In milliseconds. Wait at most 10 seconds for response from http request.
sm.setHttpTimeout(10000);
//Might throw exception if http connection timed out or some issue
//with sending request itself because of encryption/decryption of password.
var response = sm.execute();
// handle your reponse
}
其中instances.oauth_id 是oauth_entity_profile 表中记录的ID。这需要处于活动状态并拥有它们的代币才能使其正常工作。