gpt4 book ai didi

javascript - 通过 Javascript 调用 Sabre Dev Studio API

转载 作者:行者123 更新时间:2023-11-30 11:41:14 24 4
gpt4 key购买 nike

我正在尝试使用 Rest API 制作 Sabre Dev Studio 的 Web 应用程序。我正在使用javascript。我收集了应用程序所需的访问 token 和客户端 secret 。
我写了这段代码来发送一个 api 请求:

var clientId = "V1:abcD123:OPQRST:UVW";
var clientSecret = "aBcdEfG";

// Using jQuery Plugin for Encoding
var authorizationBasic = $.base64.btoa(clientId + ':' + clientSecret);
authorizationBasic = $.base64.btoa(authorizationBasic);

var request = new XMLHttpRequest();
request.open('POST', 'https://api.sabre.com/v2/auth/token HTTP/1.1', true);
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
request.setRequestHeader('User-Agent', 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36');
request.setRequestHeader('Origin', 'chrome-extension://hgmloofddffdnphfgcellkdfbfbjeloo');
request.setRequestHeader('Authorization', 'Basic ' + authorizationBasic);
request.setRequestHeader('Accept', '*/*');
request.send("grant_type=client_credentials");

request.onreadystatechange = function () {
if (this.readyState === 4) {
alert(this.responseText);
}
};

如果请求有效,API 将发送一个包含访问 token 的响应,否则它应该给我一个错误消息对象。但就我而言,我没有收到任何东西。警报功能显示一个空白的警报窗口。我不知道问题出在哪里。谁能帮我解决这个问题?

最佳答案

我不是 JavaScript 专家,但我看到至少 2 个错误:

  1. var authorizationBasic = $.base64.btoa(clientId + ':' + clientSecret);
    你需要分别对clientId和clientSecrect做base64,然后两者加一个冒号

  2. request.open('POST', 'https://api.sabre.com/v2/auth/token HTTP/1.1', true);
    我不确定您是否可以定义将在 URL 字符串中使用的 HTTP,它似乎也不是必需的。

下面是我测试成功的一个函数:

function doFunction() {
var clientId = "V1:abcD123:OPQRST:UVW";
var clientSecret = "aBcdEfG";
var authorizationBasic = window.btoa(window.btoa(clientId) + ':' + window.btoa(clientSecret));
request = new XMLHttpRequest();
var url = "https://api-crt.cert.havail.sabre.com/v2/auth/token";
request.open("POST", url, true);
request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
request.setRequestHeader("Authorization", "Basic " + authorizationBasic);
var payload = "grant_type=client_credentials";

request.send(payload);

request.onreadystatechange = function () {
if (request.readyState == 4 && request.status == 200) {
alert(request.responseText);
document.getElementById("txt").value = request.responseText;
}
}
}

关于javascript - 通过 Javascript 调用 Sabre Dev Studio API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42580894/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com