我正在尝试获取Paypal访问令牌,并且根据paypal,请求的数据为-d "grant_type=client_credentials"
,必须以application / x-www-form-urlencoded格式发送,以下为代码我现在正在尝试
let body = "grant_type=client_credentials"
return this.httpClient.post<any (`https://api.sandbox.paypal.com/v1/oauth2/token`,body);
然后我在auth拦截器中设置标题,如下所示
const copiedReq = req.clone({
setHeaders: {
'Authorization': `Basic ${this.client_id}:${this.secrete}`,
'Accept': 'application/json',
'Content-Type':'application/x-www-form-urlencoded',
}
});
return next.handle(copiedReq);
它总是返回401未经授权,但是我的client_id
和secrete
没问题,因为当我尝试与邮递员通话时,效果很好
在具有相同凭据的邮递员上工作正常,但在这里不行,我做错了什么?如何提出适当的请求以获取结果
curl -v https://api.sandbox.paypal.com/v1/oauth2/token \
-H "Accept: application/json" \
-H "Accept-Language: en_US" \
-u "client_id:secret" \
-d "grant_type=client_credentials"
答案 0 :(得分:1)
迟到总比不到好。我只是遇到了与您相同的问题,终于解决了。 您必须基于64位编码您的凭据:
let credentials: btoa(`${this.client_id}:${this.secrete}`);
const copiedReq = req.clone({
setHeaders: {
'Authorization': `Basic `+credentials,
'Accept': 'application/json',
'Content-Type':'application/x-www-form-urlencoded',
}
});
return next.handle(copiedReq);
这在几分钟前对我有用。希望下次对您有用:D