You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用RestSharp对接FedEx OAuth2授权接口时AddParameter参数疑问

关于参数取值的说明

1. 第一个参数"undefined"的作用

当你使用RestSharp的AddParameter方法且指定ParameterType.RequestBody时,第一个参数(参数名)会被框架完全忽略,没有实际作用。
官方示例里的"undefined"只是自动生成示例代码时的占位值,你可以传入任意字符串,包括空字符串""都可以正常运行,不需要严格传入"undefined"。

2. input参数的取值

input就是FedEx OAuth授权要求的请求体JSON字符串,必须包含以下三个字段:

  • grant_type:固定值为"client_credentials"
  • client_id:你在FedEx开发者控制台申请的API密钥(Client ID)
  • client_secret:和Client ID配对的客户端密钥(Client Secret)

input的实际格式示例:

{
  "grant_type": "client_credentials",
  "client_id": "你申请的FedEx Client ID",
  "client_secret": "你申请的FedEx Client Secret"
}

可直接使用的优化代码示例

官方示例中额外添加的Authorization请求头是多余的,获取AccessToken本身不需要携带该头,该头是后续调用业务接口时才需要传入的参数,优化后代码如下:

// 定义请求体对应的实体类
public class FedExAuthRequest
{
    [JsonPropertyName("grant_type")]
    public string GrantType { get; set; } = "client_credentials";
    [JsonPropertyName("client_id")]
    public string ClientId { get; set; }
    [JsonPropertyName("client_secret")]
    public string ClientSecret { get; set; }
}

// 实际请求逻辑
var client = new RestClient("https://apis-sandbox.fedex.com/oauth/token");
var request = new RestRequest(Method.POST);
request.AddHeader("X-locale", "en_US");
request.AddHeader("Content-Type", "application/json");
// 序列化得到请求体JSON
var input = JsonSerializer.Serialize(new FedExAuthRequest
{
    ClientId = "替换为你自己的Client ID",
    ClientSecret = "替换为你自己的Client Secret"
});
// 第一个参数无实际作用,传空字符串即可
request.AddParameter("", input, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);

内容的提问来源于stack exchange,提问作者user13973251

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 10:54:04