我想使用TRESTRequest组件从Freshdesk页面获取信息,但无法获得授权。但是,当我使用Postman发送请求时,我能够获得授权。
我已经尝试了我能在论坛上找到的所有解决方案,但我一再得到一个错误...
{
"code": "invalid_credentials",
"message": "You have to be logged in to perform this action."
}
这就是我使用 Delphi 11创建请求的内容。
procedure TForm1.Button2Click(Sender: TObject);
begin
RESTClient1.BaseURL := 'https://bentley.freshdesk.com/api/v2/';
RESTRequest1.Method := TRESTRequestMethod.rmGET;
RESTRequest1.Resource := 'solutions/categories';
RESTRequest1.Params.Clear;
with RESTRequest1.Params.AddItem do
begin
ContentType := ctAPPLICATION_JSON;
name := 'Authorization';
Value := 'Basic ' + edtApiKey ;
Kind := pkHTTPHEADER;
end;
RESTRequest1.Execute;
end;
- edtApiKey* 是一个编辑框,其中键入了已经Base64编码的API密钥。
问题是,我可以将完全相同的信息(URI和授权头)放入Postman,请求按预期返回完全授权...?
Postman 发送的信息和 Delphi 发送的信息在语法上肯定有些不同,但是我,无论如何,也弄不明白。
2条答案
按热度按时间wfauudbj1#
您需要将
poDoNotEncode
选项添加到参数中:unhi4e5o2#
看起来你需要提供一个假密码。文档使用
X
,因此在Base64编码之前将:X
添加到API密钥中,但显然任何密码都可以。FRESHDESK API参考除外:认证
您可以使用个人API密钥对请求进行身份验证。如果使用API密钥,则不需要密码。您可以使用任何字符集作为虚拟密码。
注意:如果您确信您的凭据是正确的,但仍然无法访问您的帮助台,请确保“APIkey:X”是Base64编码的,然后将其作为“Authorization”头传递。