AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

REST Zugriff mit OAuth1

Offene Frage von "mjustin"
Ein Thema von Guido R. · begonnen am 2. Okt 2014 · letzter Beitrag vom 29. Okt 2014
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Guido R.
Guido R.

Registriert seit: 5. Jul 2007
141 Beiträge
 
Delphi 12 Athens
 
#1

REST Zugriff mit OAuth1

  Alt 2. Okt 2014, 14:17
Hallo !

Ich soll derzeit eine Schnittstelle zum Magento-Webshop unter Delphi (XE5) schreiben.
Die Schnittstelle der Wahl ist hier REST. Ich habe jedoch Schwierigkeiten, mit Hilfe von tRestClient, tOAuth1Authenticator, tRestRequest und tRestResponse die OAuth1-Authentifizierung von magento umzusetzen. Die Werte habe ich wie in der magento REST-Dokumentation gesetzt, einen "OAuth-Verbraucher" habe ich angelegt, jedoch komme ich im besten Fall bis zur Eingabe von Benutzername und Passwort im OAuthWebForm (das ich eigentlich gar nicht haben will) und dann ist Sense


Das Beispiel von emba ist nicht wirklich hilfreich, von der "Hilfe" ganz zu schweigen :
" Embarcadero Technologies verfügt zurzeit über keine zusätzlichen Informationen. Bitte unterstützen Sie uns bei der Dokumentation dieses Themas, indem Sie Ihre Kommentare auf der Diskussionsseite eingeben. "

Hat jemand ein paar Tipps dazu, oder ein Tutorial ?

Gruß

Guido R.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: REST Zugriff mit OAuth1

  Alt 2. Okt 2014, 14:47
http://www.nickhodges.com/post/write...elphi-xe7.aspx
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Guido R.
Guido R.

Registriert seit: 5. Jul 2007
141 Beiträge
 
Delphi 12 Athens
 
#3

AW: REST Zugriff mit OAuth1

  Alt 2. Okt 2014, 16:51
Danke für den Link, aber das bringt mich leider nicht wirklich weiter.
Hodges lässt Access Token und Access Token Secret von Twitter erstellen.
Das geht in magento anscheinend nicht. Zumindest kann man die "Autorisierten OAuth-Zeichen" (babelfish lässt grüßen) nur aktivieren, widerrufen oder löschen.

http://www.magentocommerce.com/api/r...ntication.html

Ich steh' echt auf dem Schlauch
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#4

AW: REST Zugriff mit OAuth1

  Alt 2. Okt 2014, 17:07
Hodges lässt Access Token und Access Token Secret von Twitter erstellen.
Das geht in magento anscheinend nicht.
Im Beispiel-PHP Skript auf der Magento Dokuseite sind diese Variablen enthalten:

Code:
$consumerKey = 'yourconsumerkey';
$consumerSecret = 'yourconsumersecret';
Ich nehme stark an, dass es irgendwo ein Programm zur Berechnung des consumerSecret Werts gibt.

Ach, da steht es doch auf der verlinkten Seite:

Zitat:
Before starting to make API requests, you need to register the application. After the registration, you will receive the Consumer Key that will identify you in Magento. Also, you will receive a Consumer Secret. This secret will be used when requesting for a Request Token.

You can register your application by selecting System > Web Services > REST - OAuth Consumers and clicking Add New in the Admin Panel.
Michael Justin

Geändert von mjustin ( 2. Okt 2014 um 17:14 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: REST Zugriff mit OAuth1

  Alt 2. Okt 2014, 17:12
Müsste über die Adminconsole gehen

http://www.magentocommerce.com/api/r...ganApplication
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Guido R.
Guido R.

Registriert seit: 5. Jul 2007
141 Beiträge
 
Delphi 12 Athens
 
#6

AW: REST Zugriff mit OAuth1

  Alt 2. Okt 2014, 18:02
Das habe ich auch bereits.
Unter System->Webdienste->REST - OAuth-Verbraucher habe ich eine App angelegt. Magento liefert Key und Secret dazu. Diese gebe ich in ConsumerKey und ConsumerSecret ein.

BTW : Meine bisherigen Versuche halten sich nahe an embas RESTDemo (Twitter)

Als nächstes müsste man sich RequestToken und RequestSecret über den RequestTokenEndpunkt "http://www.meinwebshop.de/oauth/initiate" holen.
Delphi-Quellcode:
{...}
  RESTClient.BaseURL := OAuth1Magento.RequestTokenEndpoint;
  RESTRequest.Method := TRESTRequestMethod.rmPOST;
  RESTRequest.Execute;
{...}
Dies klappt leidlich. Die Rückgabe in RESTResponse ist vorhanden
"oauth_token=d489f53dc0eb93337086e8df6892fb81&oaut h_token_secret=5e7da1d07766ced653d2cf6a0a63d639&oa uth_callback_confirmed=true"
RESTResponse.GetSimpleValue gibt jedoch keine Werte zurück, da der ContentType weder "CONTENTTYPE_TEXT_HTML" noch "CONTENTTYPE_APPLICATION_JSON" ist.

Also pflücke ich den String selbst auseinander und trage die Werte in RequestToken und RequestSecret ein.

Als nächstes bräuchten wir die Authentifizierung der App
Delphi-Quellcode:
  LURL := OAuth1Magento.AuthenticationEndpoint;
  LURL := LURL + '?oauth_token=' + OAuth1Magento.RequestToken;

  wv := Tfrm_OAuthWebForm.Create(self);
  try
    wv.ShowModalWithURL(LURL);
  finally
    wv.Release;
  end;
Ein Fenster mit Admin-Anmeldung erscheint - Nach korrekter Eingabe der Zugangsdaten kommt die Frage, ob man die App authentifizieren möchte.

... und ab da steh ich auf dem Schlauch. - Das Fenster sollte eigentlich von alleine schließen und die App unter Magento -> System -> Webdienste -> REST Meine Apps erscheinen.

Beides passiert nicht.
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#7

AW: REST Zugriff mit OAuth1

  Alt 2. Okt 2014, 18:40


Als nächstes bräuchten wir die Authentifizierung der App
Delphi-Quellcode:
  LURL := OAuth1Magento.AuthenticationEndpoint;
  LURL := LURL + '?oauth_token=' + OAuth1Magento.RequestToken;

  wv := Tfrm_OAuthWebForm.Create(self);
  try
    wv.ShowModalWithURL(LURL);
  finally
    wv.Release;
  end;
Ein Fenster mit Admin-Anmeldung erscheint - Nach korrekter Eingabe der Zugangsdaten kommt die Frage, ob man die App authentifizieren möchte.

... und ab da steh ich auf dem Schlauch. - Das Fenster sollte eigentlich von alleine schließen und die App unter Magento -> System -> Webdienste -> REST Meine Apps erscheinen.

Beides passiert nicht.
Ist der Quelltext für Tfrm_OAuthWebForm in Delphi enthalten, so dass man hier hinein debuggen könnte?

Im Source muss - mehr oder weniger direkt - die Bedingung für die erfolgreiche Anmeldung und das Schliessen des Tfrm_OAuthWebForm enthalten sein.
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.920 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: REST Zugriff mit OAuth1

  Alt 2. Okt 2014, 22:20
Bei OAuth1 gibt es (zu) viele Versionen bzw. Varianten.
Ich vermute, dass Dein PHP-System die Rückgabeparameter anders nennt als z.B. Twitter.
Schnappe Dir mal den REST-Debugger (liegt Delphi bei) und gucke mal, was da vom Server zurück kommt.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Benutzerbild von Guido R.
Guido R.

Registriert seit: 5. Jul 2007
141 Beiträge
 
Delphi 12 Athens
 
#9

AW: REST Zugriff mit OAuth1

  Alt 8. Okt 2014, 14:46
Die Tfrm_OAuthWebForm ist in REST.Authenticator.OAuth.WebForm.Win vorhanden und man kann sie debuggen.
Ich habe den Eindruck, dass in dem RESTDemo von emba überhaupt keine Routine zum Schließen dieses Fensters hinterlegt ist.
Zumindest nicht für Twitter/OAuth1 - Bei den OAuth2-Beispielen schon. Dort werden die Funktionen für OnBeforeRedirect und/oder OnAfterRedirect und/oder OnTitleChanged direkt nach der Erzeugung des OAuthWebForm gesetzt.

Mit dem RestDebugger komme ich auch nicht wirklich weiter...
Wenn ich den OAuth-Assistant verwende, die vorgegebenen Endpoints und Client-Data eingebe, erhalte ich bei Klick auf "Step #1: Get Request-Token" die Meldung "Cannot proceed without Request-Token"...
  Mit Zitat antworten Zitat
Benutzerbild von Guido R.
Guido R.

Registriert seit: 5. Jul 2007
141 Beiträge
 
Delphi 12 Athens
 
#10

AW: REST Zugriff mit OAuth1

  Alt 16. Okt 2014, 18:02
so...

Bin jetzt einen kleinen Schritt weiter.
Hab's nun geschafft, RequestToken und VerifierPIN zu erhalten, aber beim Abruf des AccessTokens bekomme ich eine Fehlermeldung.

Delphi-Quellcode:
procedure TForm1.GetAccessToken(Sender: TObject);
var S:String;
begin
 RESTRequest.ResetToDefaults;
 RESTClient.ResetToDefaults;
 RESTResponse.ResetToDefaults;

 RestClient.Authenticator := OAuth1Auth;

 RESTClient.BaseURL := OAuth1Auth.AccessTokenEndpoint;
 RESTRequest.Method := TRESTRequestMethod.rmPost;
 RESTRequest.Params.AddItem('oauth_verifier', OAuth1Auth.VerifierPIN, TRESTRequestParameterKind.pkGETorPOST, [TRESTRequestParameterOption.poDoNotEncode]);
 RESTRequest.Execute;

 {HIER kommt die Fehlermeldung}

 Memo1.Lines.Add(RestResponse.Content);

 if {RESTResponse.}GetSimpleValue('oauth_token', S)
  then OAuth1Auth.AccessToken := S;
 if {RESTResponse.}GetSimpleValue('oauth_token_secret', S)
  then OAuth1Auth.AccessTokenSecret := S;

 AccessKeyEdit.Text := OAuth1Auth.AccessToken;
 AccessSecretEdit.Text := OAuth1Auth.AccessTokenSecret;
end;
Ich erhalte ein Bad Request : "oauth_problem=parameter_absent&oauth_parameters_a bsent=oauth_verifier", obwohl alle bis dato gesetzten Keys, Secrets und PINs im OAuth1Authenticator vorhanden sind (auch der VerifierPIN). Auch ob ich "RESTRequest.Params.AddItem(...);" verwende oder nicht, macht keinen Unterschied.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz