将Grant_Type放在XHR中的位置

时间:2017-08-09 10:15:36

标签: javascript typescript paypal xmlhttprequest nativescript

我尝试通过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更简单的方法?

1 个答案:

答案 0 :(得分:1)

如果其他人正在搜索此内容:

您需要在xhr.send()中提供授权类型作为正文 - 方法:

xhr.send('grant_type=client_credentials');