Salesforce http 标注在应用程序外部工作的端点收到 403(无效密钥)

问题描述 投票:0回答:1

我正在尝试访问 LinkPreview API(免费)。它在远程站点设置中设置正确,并且除了在 URL 参数中包含您的 api 密钥之外,api 不需要任何授权。它接受 GET 和 POST。

我可以从 Thunder 客户端(如 Postman)成功访问 API,甚至可以在浏览器中访问。从来没有问题。

但是,如果我尝试使用我的 Apex 类或匿名执行来访问它,它会给我一个错误 403,API 文档说是

Invalid or blank API access key

我认为 Salesforce 可能会分配一个它不喜欢的用户/代理,所以我设置它没有效果。

这是失败的最基本的 exec anon(

q
参数是您想要预览详细信息的 url。)我已使用 EncodingUtil 来确保端点中没有坏字符。

Http http = new Http();
HttpRequest request = new HttpRequest();
request.setEndpoint('https://api.linkpreview.net?q=www.cnn.com&key=[my key here]');
request.setMethod('GET');
HttpResponse response = http.send(request);
System.debug('🟢 ' + response.getStatus());

在此代码生成的日志中,显示了完整的端点。如果我单击它,它会打开一个浏览器,其中包含我需要的结果,因此我知道端点可以工作。我知道标注正在发生。我已经尝试过来自几个不同组织(临时组织、开发组织、生产组织)的 exec anon 代码,到处都有相同的 403 结果。

这是一个免费的 API,因此他们的网站上没有“提交支持票证”,但我已经联系了开发人员。

有谁知道源自 Salesforce 时可能会破坏标注的内容吗?

salesforce httprequest apex
1个回答
0
投票

我收到了 API 开发者的回复。不知何故,我的 IP 地址已被列入黑名单。他删除了它,一切正常。所以,代码没有问题。

© www.soinside.com 2019 - 2024. All rights reserved.