我尝试通过TypeScript中的XHR-Request访问我的OAuth2令牌。我一直得到400:{“error”:“unsupported_grant_type”,“error_description”:“Grant Type为NULL”}
我通过在iOS模拟器上运行的NativeScript应用程序(在TypeScript模板中)进行调用。
我的代码:
var oReq = new XMLHttpRequest();
oReq.open("POST", "https://api.sandbox.paypal.com/v1/oauth2/token", true);
// oReq.withCredentials = true;
// oReq.setRequestHeader('grant_type', "client_credentials");
// where client_credentials = clientID:secret
oReq.setRequestHeader('Authorization', "Basic " + this.authorizationBasic);
//where AutorizationBasic is the base64 String of my credentials
oReq.setRequestHeader('Accept', "application/json");
oReq.setRequestHeader('Accept-Language', "en_US");
oReq.onreadystatechange = function () {
console.log("state changed - new state: " + oReq.readyState + " and Status: " + oReq.status);
if (oReq.readyState === 4) {
if (oReq.status === 200) {
console.log(oReq.responseText);
} else {
console.log("Error: " + oReq.status + " Message: " + oReq.responseText);
}
}
};
console.log("Status: " + oReq.status);
oReq.send();
经过一些研究后我发现,其他一些人在PayPal API上遇到了同样的问题(例如here)。有人解决了这个问题吗?这可能是我的代码错了吗?在上面的代码中,我评论了我尝试的其他一些东西,似乎没有任何效果。
API: https://developer.paypal.com/docs/integration/direct/make-your-first-call/
我非常拼命地尝试,因为简单地调用API需要太长时间。我用我的clientID + secret尝试了curl-command,这对我有用。有谁知道该怎么办?是否有比使用XHR更简单的方法?
答案 0 :(得分:1)
如果其他人正在搜索此内容:
您需要在xhr.send()中提供授权类型作为正文 - 方法:
xhr.send('grant_type=client_credentials');