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
mjustin

Registriert seit: 14. Apr 2008
3.010 Beiträge
 
Delphi 2009 Professional
 
#1

AW: REST Zugriff mit OAuth1

  Alt 2. Okt 2014, 17: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
 
#2

AW: REST Zugriff mit OAuth1

  Alt 2. Okt 2014, 21: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
 
#3

AW: REST Zugriff mit OAuth1

  Alt 8. Okt 2014, 13: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
 
#4

AW: REST Zugriff mit OAuth1

  Alt 16. Okt 2014, 17: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
Benutzerbild von Guido R.
Guido R.

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

REST Zugriff mit OAuth1

  Alt 21. Okt 2014, 14:54
Oh mann...

Deshalb meldet der mir, dass mein Verifier nicht übertragen wird :
http://qc.embarcadero.com/wc/qcmain.aspx?d=126373
Ich habe daher TOAuth1Authenticator.DoAuthenticate um
Delphi-Quellcode:
  if VerifierPin<>''
   then LToken := LToken + Format('%s="%s"', ['oauth_verifier', URIEncode(VerifierPin)]) + ', ';
erweitert. Leider sagt mir mein Programm nun beim Abruf des Access-Tokens, dass die Signatur nicht stimmt : "oauth_problem=signature_invalid"



Gruß
Guido R.
  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 29. Okt 2014, 14:23
Heureka !

Nachdem ich die "REST.Authenticator.OAuth.pas" entsprechend umgeschrieben und damit so unbedeutende Kleinigkeiten wie die VerifierPIN eingebunden habe, kann ich mich an magento anmelden. Leider nervt die "REST.Authenticator.OAuth.WebForm" ziemlich. Kennt jmd. einen einfachen Weg, diesen zu umgehen und mittels Username und Passwort direkt Zugang zu erhalten?

Gruß
Guido R.
  Mit Zitat antworten Zitat
mjustin

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

AW: REST Zugriff mit OAuth1

  Alt 29. Okt 2014, 14:53
Heureka !

Nachdem ich die "REST.Authenticator.OAuth.pas" entsprechend umgeschrieben und damit so unbedeutende Kleinigkeiten wie die VerifierPIN eingebunden habe, kann ich mich an magento anmelden. Leider nervt die "REST.Authenticator.OAuth.WebForm" ziemlich. Kennt jmd. einen einfachen Weg, diesen zu umgehen und mittels Username und Passwort direkt Zugang zu erhalten?
Vorab: ich habe noch keine Anwendungen mit OAuth Unterstützung entwickelt. Aber nach allem was ich bisher gelesen habe, ist bei Desktop Anwendungen immer eine Web-Anmeldung erforderlich.

Zitat aus dem Wikipedia - Artikel zu OAuth:
Zitat:
... Typischerweise wird dabei die Übermittlung von Passwörtern an Dritte vermieden.
Würde man die Credentials (Username / Passwort) in der Delphi Anwendung eingeben und von dort an den Service weitergeben, hätte man innerhalb der Delphi Anwendung Zugriff auf diese und könnte sie missbrauchen. Dieses Risiko besteht nicht, wenn eine Webanmeldung über ein Login-Formular des Services erfolgt.
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
Antwort Antwort


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 05:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz