Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从salesforce sfcc获取订单时出错_Javascript_Node.js_Salesforce - Fatal编程技术网

Javascript 从salesforce sfcc获取订单时出错

Javascript 从salesforce sfcc获取订单时出错,javascript,node.js,salesforce,Javascript,Node.js,Salesforce,在执行下面的代码时,我得到了像Bearer{token}这样的令牌格式 现在,在gitting getOrderList()时,我得到了一个400错误的请求错误 我不确定我做错了什么?我使用它作为参考,从salesforce获取最近创建的所有订单 有人能帮我做这件事吗 'use strict'; const fetch = require('node-fetch'); const ocapi_path = require('./ocapi_path'); const envDomain = '

在执行下面的代码时,我得到了像Bearer{token}这样的令牌格式

现在,在gitting getOrderList()时,我得到了一个400错误的请求错误

我不确定我做错了什么?我使用它作为参考,从salesforce获取最近创建的所有订单

有人能帮我做这件事吗

'use strict';
const fetch = require('node-fetch');
const ocapi_path = require('./ocapi_path');

const envDomain = 'Domainhere';
const envClientId = 'clientidHere';
const getToken = async (domain = envDomain, clientId = envClientId) => {
  const response = await fetch(
    `${domain}/s/site-id/dw/shop/v19_1/customers/auth?client_id=${clientId}`,
    {
      method: 'POST',
      body: JSON.stringify({ type: 'guest' }),
      headers: {
        'Content-Type': 'application/json',
        'Cache-Control': 'no-cache',
      },
    },
  );
  if (!response.ok) {
    const json = await response.json();
    throw new Error(`OCAPI error response: ${JSON.stringify(json)}`);
  }

  return response.headers.get('Authorization');
};

const getOrderList = async (token) => {
  const domain = envDomain;
  const response = await fetch(
    `${domain}/s/site-id/dw/shop/v19_1/orders?status=completed`,
    {
      method: 'GET',
      headers: {
        'Content-Type': 'application/json',
        'Cookie': token,
        Authorization: token,
      },
    },
  );
  if (response.ok) {
    return await response.json();
  }

  return null;
};


const getTheResult = async () => {
    const token =  await getToken();
    const result =  await getOrderList(token);
    console.log(result);
}

getTheResult();

您需要将访问令牌交换为会话凭据,然后使用这些凭据调用Orders API

  • 来宾
    检索令牌(您已完成此操作)
  • :
  • 为客人或注册客户获取会话 您必须向/sessions资源传递有效的JWT。JWT必须是 作为授权传递:承载请求头。如果你成功了 获取会话cookies

    获取此错误“类型”:“InvalidAccessTokenException”,“消息”:“请求未经授权,访问令牌无效。”
    REQUEST:
    POST /dw/shop/v20_2/sessions HTTP/1.1
    Host: example.com
    x-dw-client-id: ...
    Authorization: Bearer <token>
    
    RESPONSE:
    HTTP/1.1 204 NO CONTENT
    Set-Cookie : dwsecuretoken_a85a5236a2e852d714eb6f1585efb61c=""; Expires=Thu, 01-Jan-1970 00:00:10 GMT;
    Set-Cookie : dwsid=eXv5R3FZGI4BBfbK1Opk5s1mJ-41Aw7ZuaMKxeye5xa16fJMX--AnNkXsvmakbi1UZSzP1zoPmUILgoom1_jKg==;
    Set-Cookie : dwanonymous_a85a5236a2e852d714eb6f1585efb61c=bdjalnzmfrkJ0FtYliwud5db67; Max-Age=15552000;
    Cache-Control: max-age=0,no-cache,no-store,must-revalidate
    
    REQUEST:
    GET /dw/shop/v15_2/orders?status=completed HTTP/1.1
    Host: example.com
    Cookie: dwsecuretoken_a85a5236a2e852d714eb6f1585efb61c="";dwsid=eXv5R3FZGI4BBfbK1Opk5s1mJ-41Aw7ZuaMKxeye5xa16fJMX--AnNkXsvmakbi1UZSzP1zoPmUILgoom1_jKg==; dwanonymous_a85a5236a2e852d714eb6f1585efb61c=bdjalnzmfrkJ0FtYliwud5db67;
    Content-Type: application/json; charset=UTF-8
    
    RESPONSE:
    HTTP/1.1 200 OK
    Content-Type: application/json; charset=UTF-8
    
    {
       "_v" : "15.2",
       "count" : ...,
       "data" : [...],
       ...
    }