我正在尝试使用RestSharp代码从ZOHO获取OAuth2访问令牌。Postman模拟运行正常,所以我知道我的代码中缺少一些东西。
我总是得到一个“客户id无效”的结果状态。然而,在Postman中,当我单击“获取新的访问令牌”时,它会工作并返回一个代码。我有与邮递员授权选项卡中相同的项目(client_id、client_secret等)。在Postman中,"Body“被设置为"none",并且没有参数或头部。我的代码和邮递员之间唯一的区别是邮递员需要回调URL。我的代码试图使用"self-client“获取代码,它绕过了回调URL。
我已经尝试了请求调用的几种不同的替代方法,包括ParameterType.Body和ParameterType.GetOrPost。GetOrPost和表单是一样的吗?
client = New RestClient(ZOHO_API_URL)
request = New RestRequest(TokenUrl, Method.POST)
request.AddHeader("content-type", "application/x-www-form-urlencoded") ' also tried: "application/json")
request.AddParameter("grant_type", "authorization_code",
ParameterType.GetOrPost)
request.AddParameter("client_id", Client_ID, ParameterType.GetOrPost)
request.AddParameter("client_secret", Client_Secret,
ParameterType.GetOrPost)
request.AddParameter("code", Grant_Token, ParameterType.GetOrPost)
response = client.Execute(request)以下是RestSharp的转换后的邮政编码:
var client = new RestClient("http://");
var request = new RestRequest(Method.POST);
request.AddHeader("Postman-Token", "xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx");
request.AddHeader("cache-control", "no-cache");
IRestResponse response = client.Execute(request);关于我做错了什么的想法。我试图查看Fiddler遇到的原始数据,但当我这样做时,Postman指示失败。我需要使用什么代码来复制Postman正在做的事情?
如果回调URL也是必需的,我该如何实现它?
发布于 2019-07-12 18:19:26
我快速查看了ZoHo REST API文档,似乎您应该使用有限输入设备authentication flow。
从他们的帮助页面上我可以理解,你确实需要做一个POST请求,但是参数必须被指定为查询参数:
https://accounts.zoho.com/oauth/v3/device/code?
client_id=1000.GMB0YULZHJK411248S8I5GZ4CHUEX0&
scope=AaaServer.profile.READ&
grant_type=device_request只需使用client.UseJson(),将JSON设置为序列化和内容类型的默认值,您也会变得更好。
发布于 2020-02-07 06:16:14
也许Postman是从API端点重定向的,因为其功能与RestSharp不同(可能缺少尾部斜杠或类似的东西)。
尝试添加
client.FollowRedirects = false;添加到您的RestSharp代码中并分析结果。
https://stackoverflow.com/questions/56891856
复制相似问题