woocommerce post和put方法在postman上有效,但在我的angular项目中不起作用

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

我的项目面临一个大问题 我正在使用wooCommerce API与ionic(与angular合作)制作前端移动应用程序 我使用了我在stackoverflow中找到的一个方法来生成授权,它与GET方法一起工作,但当我测试Post方法时,响应是未授权的或被cors阻止的。 这是我的代码(这是一个本地项目,因此共享客户密钥和机密没有问题):

这是一种生成授权的方法:


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);
  }
  


}