我正在尝试使用RestSharp代码从ZOHO获取OAuth2访问令牌。邮递员模拟工作正常,因此我知道我的代码中缺少某些内容。
我总是得到“无效的客户ID”结果状态。但是在Postman中,当我单击“获取新的访问令牌”时,它可以工作并返回代码。我和邮递员授权标签中的项目相同(client_id,client_secret等)。在Postman中,“正文”设置为“无”,并且没有参数或标题。我的代码和邮递员之间的唯一区别是,邮递员需要回调URL。我的代码尝试使用“自我客户端”获取代码,该代码绕过了回调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?
答案 0 :(得分:0)
我迅速检查了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设置为序列化和内容类型的默认设置,您还将获得更好的收益。
答案 1 :(得分:0)
由于功能不同,邮递员与RestSharp相比,邮递员可能从API端点进行了重定向(可能缺少尾部斜杠或类似符号)。
尝试添加
client.FollowRedirects = false;
您的RestSharp代码并分析结果。