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
Benutzerbild von Guido R.
Guido R.

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

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
 
#2

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
 
#3

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
 
#4

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
 
#5

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 02:51 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