Entwickler-Ecke

Internet / Netzwerk - SkyDrive Login


ChrisCross - Mo 03.02.14 15:04
Titel: SkyDrive Login
Hallo,

ich würde mich gerne auf SkyDrive/ OneDrive einloggen. Ich habe es mit folgenden Code versucht. Leider klappt die Anmeldung nicht. Ich finde meinen Fehler nicht.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
procedure TFormOneDrive.btn1Click(Sender: TObject);
var
  lParams: TStringList;
begin
  try
    lParams := TStringList.Create();
    lParams.Add('login=' + edtname.Text);
    lParams.Add('passwd=' + edtkennwort.Text);
    lParams.Add('submit=Anmelden');
    IdHTTP1.Post('http://www.onedrive.live.com', lParams);
    IdHTTP1.Post('https://skydrive.live.com/?mkt=de-DE',lParams);
    Application.MessageBox('Sie wurden erfolgreich eingeloggt.''Login OneDrive', MB_ICONINFORMATION or MB_OK);
  except
    Application.MessageBox('Sie konnten nicht eingeloggt werden.''Login OneDrive', MB_ICONWARNING or MB_OK);
  end;
end;


jaenicke - Mo 03.02.14 15:07

Hast du denn einen Cookiemanager zugewiesen? Denn ohne Cookies kannst du nach dem Login auch nichts damit anfangen.

Und wie hast du Weiterleitungen eingestellt? HandleRedirects wirst du vermute ich setzen müssen, da beim Login soweit ich das in Erinnerung habe welche benutzt werden.


ChrisCross - Mo 03.02.14 15:44

Einen Cookiemanager habe ich zugewiesen. Den Code habe ich eigentlich in einem anderen Programm genutzt. Dort hat das so funktioniert und man wurde automatisch weitergeleitet, also die erste Seite, war die Seite auf der man die Daten eingegeben hat und die zweite die Seite wo man hin wollte. Wenn jetzt ein Except ausgelöst wurde, konnte die Seite nicht aufgerufen werden und die eingegebenen Nutzerdaten waren somit die falschen Nutzerdaten.

Aber ich weiß nicht, ob das jetzt auch so funktioniert, oder was ich anders machen muss, da ich mich mit idHttp nicht so gut auskenne.

Zitat:
HandleRedirects wirst du vermute ich setzen müssen, da beim Login soweit ich das in Erinnerung habe welche benutzt werden.


Wie mache ich das?


jaenicke - Mo 03.02.14 16:58

user profile iconChrisCross hat folgendes geschrieben Zum zitierten Posting springen:
Wie mache ich das?
Im Objektinspektor auf True setzen...

Außerdem ist der größte Fehler an dem Code, dass du die Exceptioninformationen ignorierst (also nicht mit on E: Exception do abfängst und auswertest). Da steht sicher mehr drin über den Fehler...


ChrisCross - Mo 03.02.14 19:00

Ich erhalte folgende Fehlermeldung:

Unbenannt


jaenicke - Mo 03.02.14 19:04

:autsch:

Ok, die Fehlermeldung heißt einfach, dass du keinen IOHandler für SSL eingeklinkt hast. Das ist eine https Adresse. Indy behandelt das nicht selbst. Du musst also z.B. für OpenSSL einen TIdSSLIOHandlerSocketOpenSSL als IOHandler zuweisen und die OpenSSL-DLLs herunterladen und zu deinem Programm ins Verzeichnis legen.


ChrisCross - Di 04.02.14 13:14

Habe ich gemacht. Jetzt erscheint folgende Fehlermeldung:

Bild

Wenn ich das richtig verstehe, findet er die Seite nicht. Die Adressen sind aber richtig.


UGrohne - Di 04.02.14 14:08

user profile iconChrisCross hat folgendes geschrieben Zum zitierten Posting springen:
Einen Cookiemanager habe ich zugewiesen. Den Code habe ich eigentlich in einem anderen Programm genutzt.

Du hast genau diesen Code verwendet, um in einem anderen Programm auf SkyDrive zuzugreifen? Ganz sicher?

Denn ich kann mir nicht vorstellen, dass das funktioniert. Der SkyDrive-Login wird vom Live-Login (Federated Authentication) durchgeführt, auf einem ganz anderen Server. Und die Parameternamen stimmen da auch nicht, mal ganz davon zu schweigen, dass das so gar nicht funktionieren kann.

Hier gibt es Infos dazu, wie man von eigenen Programmen auf das SkyDrive zugreift: http://msdn.microsoft.com/en-us/library/windows/apps/dn263258.aspx