调用PayPal API获取令牌时遇“Authorization header无有效令牌”错误求助
问题分析与解决
你的代码核心错误是请求方法不匹配:
- 你创建了一个
Method.Post类型的RestRequest,但调用的是ExecuteGetAsync方法,这会强制把请求转为GET方式发送。而PayPal的v1/oauth2/token接口需要POST请求才能正确接收grant_type参数,GET请求会导致接口无法识别参数,进而返回invalid_token错误。
修正后的代码
var clientId = "yyyy"; var secret = "xxxx"; var client = new RestClient("https://api-m.sandbox.paypal.com/"); client.AddDefaultHeader("Authorization", "Basic " + Convert.ToBase64String(Encoding.UTF8.GetBytes(string.Format("{0}:{1}", clientId, secret)))); var request = new RestRequest("v1/oauth2/token", Method.Post); // 明确指定参数的Content-Type,匹配PayPal接口要求的格式 request.AddParameter("application/x-www-form-urlencoded", "grant_type=client_credentials", ParameterType.RequestBody); var response = await client.ExecutePostAsync(request);
额外说明
- 替换
ExecuteGetAsync为ExecutePostAsync,确保请求方法与定义的一致。 - 显式指定参数的Content-Type为
application/x-www-form-urlencoded,这是PayPal令牌接口要求的参数格式,Postman会自动配置该头部,但手动编写代码时最好明确声明,避免RestSharp默认格式不匹配的潜在问题。
内容的提问来源于stack exchange,提问作者redoc01
相关产品推荐
相关产品推荐

