【问题标题】:jet.com Partner API - Rest, JSON, RestSharp?jet.com 合作伙伴 API - Rest、JSON、RestSharp?
【发布时间】:2015-10-16 21:41:20
【问题描述】:

我有一个用 VB.net 编写的自定义订单管理系统。我现在需要使用 jet.com 合作伙伴 API 与他们集成。我相信这对你们那里的网络专家来说并不难,但我对 api 的 RESTful 调用没有太多经验。

documentation I have 说:

Jet API 安全流程
以下安全流程是用于访问需要授权的 Jet API 函数的假定流程:

用户通过 HTTPS POST 请求通过 SSL/TLS 向 Jet API /api/Token 端点提交他/她的凭据,如下所示:

POST https://merchant-api.jet.com/api/Token HTTP/1.1 
Host: merchant-api.jet.com 
Content-Type: application/json; charset=utf-8 
Content-Length: 42 

{"user":"dummy@jet.com","pass":"XXXXXXXX"} 

/api/Token 端点是 Jet API 用户的单点身份验证。因此,它不需要身份验证或授权。

如果用户成功通过身份验证,则通过 SSL/TLS 返回安全(不记名)令牌,该令牌携带与用户编码和签名相关的声明:

HTTP/1.1 200 OK 
Cache-Control: no-store 
Pragma: no-cache 
Content-Length: XXX 
Content-Type: application/json; charset=utf-8 
Server: Microsoft-IIS/8.0 
Set-Cookie: auth0=XXX...XX; path=/; secure; httponly 
Server: nginx/1.7.1 
X-AspNet-Version: 4.0.30319 
X-Powered-By: ASP.NET 
Date: Wed, 06 Aug 2014 13:50:17 GMT 
Set-Cookie: SERVERID=03-4BRURJ6FFLMCK; path=/ 

{"id_token":"XXX...XX","access_token":"XXX...XX","token_type":"bearer"} 

令牌包含在 JSON 节点 id_token 中,应在对 Jet API 的以下 HTTP 请求中用作授权工具(请参阅下面的第 4 条),直到它过期或被刷新。

如果未在 /api/Token 端点进行身份验证,用户将返回带有标头 HTTP/1.1 401 Unauthorized 的 HTTP 响应。 拥有上述不记名令牌后,用户应在调用其他 Jet API 端点时将其作为授权标头中 HTTPS 请求的一部分提供。此标头具有以下形式:授权:承载 如果用户具有与令牌相关的适当权限,他/她将被允许访问端点和/或由这些权限分配的特定数据。请求将被执行并由对应调用的API函数定义响应,否则返回HTTP/1.1 401 Unauthorized response。

提供给 Jet API 用户的不记名令牌的生命周期有限。但是,在令牌过期之前,不记名令牌将完全替代用户凭据,因此必须将令牌作为私有加密材料处理。

谁能给我一些示例代码来用 C# 做到这一点?我在想使用 RestSharp 会有所帮助,但也没有任何经验。

我需要他们的 API:

  1. 授权我的 API 调用
  2. 以 JSON 格式上传产品
  3. 检索订单信息

所以,我被困在第一阶段,授权我的 API 调用。

【问题讨论】:

    标签: c# json post restsharp jet.com-apis


    【解决方案1】:

    您好,您可以使用此示例代码,我已使用 this link 生成此代码

    var client = new RestClient("https://merchant-api.jet.com/api/token/");
    var request = new RestRequest(Method.POST);
    request.AddHeader("postman-token", "xxxx");
    request.AddHeader("cache-control", "no-cache");
    request.AddHeader("authorization", "Basic xxxx");
    request.AddHeader("content-type", "application/json");
    request.AddParameter("application/json", "{\"user\":\"xxxx\",\"pass\":\"xxxx\"}", ParameterType.RequestBody);
    IRestResponse response = client.Execute(request);
    

    【讨论】:

    • 你只需要更改url并检查方法是使用GET、PUT还是POST方法
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-02
    • 2019-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-30
    相关资源
    最近更新 更多