我的公司使用nocrm.io软件来跟踪潜在客户和客户。我想在我们的Web应用程序中使用它们的API来获取和发布信息。目前,我在尝试使用其API在我们的Web应用程序中发出http请求时遇到问题。每次尝试执行GET请求以ping我的APIKey时,我都会返回401错误。我曾尝试通过Postman发出请求,但这些请求仍然有效,但是当我尝试在我的应用程序中实现这些请求时,这些请求就无效了。
如果任何人有使用此API的经验或对我有帮助的类似内容,那都很棒。
以下是其API的链接:https://youdontneedacrm.com/api#nocrm.io-api
当前,我正在使用jquery AJAX发出请求。我已经尝试按照API的建议将APIKey放在标头中,但这只给了我401和CORS。他们的API还建议您可以将APIKey放入请求的参数中,但仍然会出现相同的401错误。
是的,我还确保我使用的APIKey是正确的,所以这不应该成为问题。
我将请求放入浏览器,该浏览器返回200状态,表示我的APIKey也正确。
下面是当前给我401错误的原因。
myfile.js
import $ from 'jquery'
const api_key = require('../../../env.config.json').CRM.API_KEY;
class Myfile extends React.Component{
constructor(props){
super(props);
this.state = {}
}
PingApi(){
var url = 'https://OUR_ACCOUNT.nocrm.io/api/v2/ping'
var apikey = api_key
var dataObject = {
'X-API-KEY': apikey
}
$.ajax({
type: 'GET',
dataType: 'jsonp',
url: url,
data: dataObject,
headers: {"Accept": "application/json"},
crossDomain: true,
beforeSend: function(xhr){
xhr.withCredentials = true;
},
success: function(data, textStatus, jqXHR){
console.log("Good");
},
error: function(jqXHR, textStatus, errorThrown){
console.log(jqXHR);
console.log(textStatus);
console.log(errorThrown);
}
})
}
render(){
return(
<button onClick={this.PingApi.bind(this)}>Ping API</button>
);
}
}
export default Myfile
我希望得到200状态,并返回json对象,但得到401。
编辑 这是在Postman中处理请求的屏幕截图。显然,出于安全原因,我屏蔽了敏感信息。是的,API密钥与我在网络应用程序中使用的密钥相同。
答案 0 :(得分:1)
虽然您可以通过请求正文或标头(根据文档)传递API密钥-您正在发送GET请求,但没有正文。通过标头传递它:
headers: {"Accept": "application/json", "X-API-KEY": apikey}