Есть ли альтернативная аутентификация для API woocommerce? - PullRequest
0 голосов
/ 19 февраля 2019

Передо мной стоит большая задача, чтобы мое приложение Delphi посмотрело на Api от Woocommerce.Я получил ПОЛУЧЕНИЕ, я получил ПОСТ, но теперь я застрял в ПОЛОЖЕНИИ в Остальном.Я думал, что с той же функцией, что и POST, я могу выполнить PUT, но я получаю сообщение, что мне не разрешено изменять.Что не имеет смысла, я могу создать, но не изменить?

Понизил Я перечислю способ, которым я делаю POST, и второй код, где я сделал некоторые изменения, пытаясь сделать PUT.

Помня, что я уже пытался сделать с кодом POST, просто изменив метод на rmPUT, и код PUT, я получаю сообщение о том, что подпись недействительна.

Если кто-нибудь знает, как мне помочьпожалуйста, если нет, моя последняя альтернатива - найти способ изменить тип аутентификации API Woocommerce, который я не знаю, если это возможно ...

//My Procedure for POST  
procedure TForm1.Criar;
var
  s,r: String;
begin
  RESTRequest.ResetToDefaults;
  RESTClient.ResetToDefaults;
  RESTResponse.ResetToDefaults;
  RESTResponseDSAdapter.ResetToDefaults;
  WooAuth.ResetToDefaults;

  WooAuth.ConsumerKey := edtConsumerKey.Text;
  WooAuth.ConsumerSecret := edtConsumerSecret.Text;

  RESTClient.BaseURL := edtBaseURL.Text;
  RESTRequest.Method := TRESTRequestMethod.rmPOST;
  RESTRequest.Resource := '/products/categories';

  RESTRequest.AddParameter('name', edtNomeGrupo.Text);
  RESTRequest.AddParameter('description', edtDescGrupo.Text);
  RESTRequest.AddParameter('oauth_consumer_key', edtConsumerKey.Text);
  RESTRequest.AddParameter('oauth_signature_method', WooAuth.SignatureMethod);
  RESTRequest.AddParameter('oauth_nonce', WooAuth.nonce);
  RESTRequest.AddParameter('oauth_timestamp', WooAuth.timeStamp.DeQuotedString);
  RESTRequest.AddParameter('oauth_version', WooAuth.Version);
  s := WooAuth.SigningClass.BuildSignature(RESTRequest, WooAuth);
  RESTRequest.AddParameter('oauth_signature', s);
end;

//My Procedure for PUT
procedure TForm1.Atualizar;
var
  s,r: String;
begin
  RESTRequest.ResetToDefaults;
  RESTClient.ResetToDefaults;
  RESTResponse.ResetToDefaults;
  RESTResponseDSAdapter.ResetToDefaults;
  WooAuth.ResetToDefaults;

  WooAuth.ConsumerKey := edtConsumerKey.Text;
  WooAuth.ConsumerSecret := edtConsumerSecret.Text;

  RESTClient.BaseURL := edtBaseURL.Text;
  RESTRequest.Method := TRESTRequestMethod.rmPUT;
  RESTRequest.Resource := '/products/categories';
  RESTRequest.ResourceSuffix := '16?name={name}&description={description}&oauth_consumer_key={oauth_consumer_key}&oauth_signature_method={oauth_signature_method}&oauth_nonce={oauth_nonce}&oauth_timestamp={oauth_timestamp}&oauth_version={oauth_version}&oauth_signature={oauth_signature}';

  RESTRequest.AcceptEncoding := 'identity';
  RESTClient.AcceptEncoding := 'identity';

  RESTRequest.AddParameter('name', edtNomeGrupo.Text, TRESTRequestParameterKind.pkURLSEGMENT);
  RESTRequest.AddParameter('description', edtDescGrupo.Text, TRESTRequestParameterKind.pkURLSEGMENT);
  RESTRequest.AddParameter('oauth_consumer_key', edtConsumerKey.Text, TRESTRequestParameterKind.pkURLSEGMENT);
  RESTRequest.AddParameter('oauth_signature_method', WooAuth.SignatureMethod, TRESTRequestParameterKind.pkURLSEGMENT);
  RESTRequest.AddParameter('oauth_nonce', WooAuth.nonce, TRESTRequestParameterKind.pkURLSEGMENT);
  RESTRequest.AddParameter('oauth_timestamp', WooAuth.timeStamp.DeQuotedString, TRESTRequestParameterKind.pkURLSEGMENT);
  RESTRequest.AddParameter('oauth_version', WooAuth.Version, TRESTRequestParameterKind.pkURLSEGMENT);
  s := WooAuth.SigningClass.BuildSignature(RESTRequest, WooAuth);
  RESTRequest.AddParameter('oauth_signature', s, TRESTRequestParameterKind.pkURLSEGMENT);
end;
...