woocommerce post和put方法在postman上有效,但在我的angular项目中不起作用
我的项目面临一个大问题 我正在使用wooCommerce API与ionic(与angular合作)制作前端移动应用程序 我使用了我在stackoverflow中找到的一个方法来生成授权,它与GET方法一起工作,但当我测试Post方法时,响应是未授权的或被cors阻止的。 这是我的代码(这是一个本地项目,因此共享客户密钥和机密没有问题): 这是一种生成授权的方法:woocommerce post和put方法在postman上有效,但在我的angular项目中不起作用,angular,api,woocommerce,Angular,Api,Woocommerce,我的项目面临一个大问题 我正在使用wooCommerce API与ionic(与angular合作)制作前端移动应用程序 我使用了我在stackoverflow中找到的一个方法来生成授权,它与GET方法一起工作,但当我测试Post方法时,响应是未授权的或被cors阻止的。 这是我的代码(这是一个本地项目,因此共享客户密钥和机密没有问题): 这是一种生成授权的方法: import { Injectable } from '@angular/core'; import hmacSHA1 from
import { Injectable } from '@angular/core';
import hmacSHA1 from 'crypto-js/hmac-sha1';
import Base64 from 'crypto-js/enc-base64';
@Injectable({
providedIn: 'root'
})
export class WoocommerceService {
nonce: string = ''
currentTimestamp: number = 0
customer_key: string = 'ck_4a92bcb1b1713654e98d65328b3b6216c000f08c';
customer_secret: string = 'cs_07aa20773656d90725cdf9860d347e84d4180fc7';
constructor() { }
authenticateApi(method,url,params) {
var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
this.nonce ='';
for(var i = 0; i < 6; i++) {
this.nonce += possible.charAt(Math.floor(Math.random() * possible.length));
}
this.currentTimestamp = Math.floor(new Date().getTime() / 1000);
let authParam:object ={
oauth_consumer_key : this.customer_key,
oauth_nonce : this.nonce,
oauth_signature_method : 'HMAC-SHA1',
oauth_timestamp : this.currentTimestamp,
oauth_version : '1.0',
}
let parameters = Object.assign({}, authParam, params);
let signatureStr:string = '';
Object.keys(parameters).sort().forEach(function(key) {
if(signatureStr == '')
signatureStr += key+'='+parameters[key];
else
signatureStr += '&'+key+'='+parameters[key];
});
let paramStr:string = '';
Object.keys(params).sort().forEach(function(key) {
paramStr += '&'+key+'='+parameters[key];
});
return url+'?oauth_consumer_key='+this.customer_key+'&oauth_nonce='+this.nonce+'&oauth_signature_method=HMAC-SHA1&oauth_timestamp='+this.currentTimestamp+'&oauth_version=1.0&oauth_signature='+Base64.stringify(hmacSHA1(method+'&'+encodeURIComponent(url)+'&'+encodeURIComponent(signatureStr),this.customer_secret+'&'))+paramStr;
}
请帮忙
import { environment } from './../../../environments/environment';
import { WoocommerceService } from './../woocommerce.service';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root'
})
export class UserService {
constructor(private http:HttpClient,private WoocommerceService:WoocommerceService) { }
getUsetByEmail(){
let myUrl=this.WoocommerceService.authenticateApi("GET",environment.apiURL+"wc/v3/customers/"+"5",{});
return this.http.get(myUrl);
}
updateUser(user){
let param = {
first_name: "James",
billing: {
first_name: "James"
},
shipping: {
first_name: "James"
}
}
let myUrl= this.WoocommerceService.authenticateApi("GET",environment.apiURL+"wc/v2/customers/"+user.id+"",{});
return this.http.put(myUrl,param);
}
}