Login auf Website mittels App und Push-Ruhe

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Login auf Website mittels App und Push-Ruhe

    Hallo zusammen,

    Ich befürchte gesteinigt zu werden, aber ich muss nen Thread erstellen.

    Ich habe (wirklich) nichts im Netz oder hier im Board gefunden, dass passt.

    Es geht darum, dass ich meiner App einen Login-View hinzufügen möchte. Der User soll sich simpel per Benutzername und Passwort auf einer vordefinierten Website einloggen können. Eine Registrierung auf dieser Website muss vorher erfolgt sein.
    Wie kann ich nun also Benutzername und Passwort am sichersten an die Website übergeben? Muss ich dazu Schreibrechte auf der Website haben, um dort evtl eine PHP anzusteuern?

    Frage 2, aber noch eher nebensächlich: Wie kann ich PushNotifications am effektivsten ausschalten? Also das der Nutzer z.B. auswählt, dass er zwischen 20:00 Uhr und 6:00 Uhr keine Pushnachrichten empfangen möchte. Kann ich das in der App direkt lösen oder wird dann auf die SQL-Datenbank zugegriffen und der DeviceToken für diese Zeit entfernt und danach wieder hinzugefügt?

    Ich bin diesem Forum sehr dankbar und würde mich über etwas Hilfestellung freuen.

    TWEAK
  • Na wenn du die Dinger sicher übertragen willst nimmst du einfach HTTPS und um dem ganzen noch die "Krone" aufzusetzen generierst du den Password-Hash schon in der App und schickst nur den zu deiner Website, zum Beispiel an ein PHp-Skript dass dann entsprechend antwortet, ob der Login erfolgreich war und noch nen Session-Hash oder was weiß ich mit dazu. Zu den Push-Nachrichten: Speicher einfach in deiner Tabelle mit den Push-Token und UDID's und so noch den Start-Zeitpunkt und den End-Zeipunkt (also ab wann und bis wann geschickt werden soll) und dann immer wenn du eine Nachricht senden willst guckst du einfach, ob du "darfst". Denk aber an die Zeitzonen!
  • Ich muss gestehen, dass ich immernoch keinen Schritt weiter bin.
    Im Storyboard die Textfelder und Button anzulegen ist in 30 Sekunden erledigt. Ich komme aber einfach nicht weiter, die Werte an eine Website zu senden.
    Falls also noch jemand nen guten Tipp für einen Einsteiger hat, wäre ich sehr sehr dankbar. Gern kann ich per PN auch mitteilen, um welche Website es sich handelt, sofern das ne Rolle spielt.
  • Es ging nur um die Nennung der Website per PN. Der Lösungsansatz sollte natürlich immer öffentlich sein. Sonst könnte niemand was "ergoogeln" :) ...

    Also nichts für ungut, ich werde noch weiter probieren
  • Nachdem ich noch an anderen Baustellen beschäftigt war, hole ich dieses Thema nochmal hervor.
    Leider funktioniert der Login immernoch nicht.

    Ich beschreibe mal, wie die App ungefähr aussieht:

    Es ist eine Tab Bar App.

    Ich parse Daten vom RSS-Feed einer Website und stelle diese im ersten Tab in einem TableView dar.
    Wenn man dann eine Tabllenzelle antippt, öffnet sich der dahinter steckende Link in einen WebView.
    Nun kann man sich dort natürlich auch einloggen, aber ich möchte dies gern aus der App heraus machen.

    In einem separaten Tab habe ich ein Konfigmenü. Dort soll der User unter anderem seinen Benutzernamen und Passwort eingeben und senden können.
    Wenn dies geschehen ist und der User eingeloggt ist, sollte der User auch im Webview des 1. Tabs eingeloggt sein und bleiben !

    Ich teste das ganze zunächst mit fixen Werten. Meinen Usernamen und Passwort habe ich zu Testzwecken also direkt im Code implementiert.

    folgenden Quelltext hat die Website:

    PHP-Quellcode

    1. <form action="http://www.DOMAIN.de/" method="post">
    2. <input type="hidden" name="loginpage" value="/" />
    3. <input type="hidden" name="action" value="login" />
    4. <label for="bname">Benutzer: </label>
    5. <input type="text" id="bname" name="bname" size="12" maxlength="30" />
    6. <label for="passw">Passwort: </label>
    7. <input type="password" id="passw" name="passw" size="12" maxlength="30" />
    8. <input type="checkbox" name="permlogin" value="1" id="permlogin" />
    9. <label for="permlogin">dauerhaft einloggen</label>
    10. <input type="submit" value="einloggen" />
    11. </form>
    12. </div>
    Alles anzeigen


    und folgenden Code habe ich versucht:

    Quellcode

    1. - (IBAction)userLogin:(id)sender {
    2. NSLog(@"Login-Button wurde gedrückt");
    3. NSString *username = @"USERNAME";
    4. NSString *password = @"PASSWORT";
    5. NSString *post;
    6. post = [@"loginpage=%2F&action=login&bname=" stringByAppendingString:username];
    7. post = [post stringByAppendingString:@"&passw="];
    8. post = [post stringByAppendingString:password];
    9. NSLog(@"post:%@",post);
    10. NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
    11. NSString *postLength = [NSString stringWithFormat:@"%d",[postData length]];
    12. NSURL *urlForLoginRequest =[NSURL URLWithString:@"http://www.DOMAIN.de"];
    13. NSLog(@"post:%@",postLength);
    14. NSMutableURLRequest *loginRequest = [NSMutableURLRequest requestWithURL:urlForLoginRequest];
    15. [loginRequest setValue:postLength forHTTPHeaderField:@"Content-Length"];
    16. [loginRequest setHTTPMethod:@"POST"];
    17. [loginRequest setValue:@"http://www.DOMAIN.de" forHTTPHeaderField:@"Referer"];
    18. [loginRequest setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
    19. [loginRequest setHTTPShouldHandleCookies:YES];
    20. [loginRequest setHTTPBody: postData];
    21. }
    Alles anzeigen



    Wäre schön, wenn mir jemand dabei helfen könnte.

    TWEAK
  • Hallo macmoonshine,

    Vielen Dank, dass DU Dich hier auch meiner Sache annimmst. Bist sehr aktiv und äusserst kompetent, was ich hier so lese. Genug geschleimt... ;)

    Im Prinzip habe ich 2 Probleme. Der Webmaster, der die HP erstellte, wurde gefeuert. Der neue nimmt seine Arbeit erst demnächst auf und muss dann wohl einiges aufholen, insbesondere bei anderen Projekten.
    Ich habe momentan also nur den Quelltext, den ich gepostet habe und muss damit erstmal klar kommen.
    Leider habe ich von PHP kaum Ahnung und weiss somit auch nicht, ob der Server da überhaupt "antwortet". Dies wär natürlich wichtig, damit die App weiss, ob der Login erfolgreich war.

    Das zweite Problem ist, dass ich mich in Xcode bzw in Objective-C auch noch in den absoluten Anfängen befinde und in diesem Fall nicht weiss, wie ich ermittle, ob eine Antwort kommt, bzw wie ich diese dann auswerte und/oder in einem WebView darstelle.

    Ich konnte sehr viele Dinge mühsam lernen und auch verinnerlichen. Ich bin des englischen mittelmäßig mächtig, aber mit den Apple-Dokumentationen habe ich noch paar Probleme.

    Ich konnte bisher alles lösen, auch wenn es Tage dauerte. Aber hier stecke ich fest.
    Da ich nicht weiss, wann ich mit Hilfe des neuen Webmasters rechnen kann, möchte ich es selbst (mit Eurer Hilfe) versuchen zu lösen.

    Von der Logik her wird doch beim Login auf der Website ein URL generiert, der Benutzernamen und Passwort überträgt. Diesen URL muss ich doch dann "nur" via App generieren und per POST senden, oder bin ich da auf dem Holzweg. Interessant wäre natürlich, wie ich dann eine Rückmeldung über den Erfolg des Logins erhalte, damit ich es in der App verwenden kann.

    Doch ich stecke ja schon beim Login fest.

    Ist es dann auch möglich, dass der erfolgreiche Login im einen View, sich auf einen anderen View auswirkt? Also ich logge mich im 1. View ein und wenn ich im 2. View die Website öffne, dass ich dort auch eingeloggt bin.

    Ich danke allen, die mir etwas Licht ins Dunkel bringen !!

    TWEAK

    Edit: Absätze eingefügt, die Tapatalk verschluckt hat.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Tweak ()

  • Hi tweak,

    Wenn ich das richtig gesehen habe, hast du dein request gar nicht verschickt oder gesendet.

    Du musst noch ein nsurlconnection Objekt erstellen. Da fügst du dein request ein und setzt die Delegate auf dein Objekt - Self. Zusätzlich musst du in der Datei dann die Delegat Methoden implementieren.

    In der Datei *.h Protokoll hinzufügen
    NSURLConnectionDelegate.

    Danach einfach Connection starten.

    Quellcode

    1. Naurlconnection *newConnection = [[nsurlconnection alloc] initwithrequest:deinrequest delegate:self];
    2. [newconnection start];



    Methoden:

    Quellcode

    1. - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
    2. {
    3. Nslog(@"Daten erhalten");
    4. }
    5. - (void)connectionDidFinishLoading:(NSURLConnection *)connection
    6. {
    7. Nslog(@"fertig geladen");
    8. }
    9. - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
    10. {
    11. Nslog(@"Fehler");
    12. }
    Alles anzeigen


    Sorry für die Anzeige, habe es über mein Handy geschrieben!
    LG Thomas

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von tomekcp ()

  • Tweak schrieb:

    Hallo macmoonshine,...

    ...TWEAK

    Quellcode

    1. @schwirr@ +tilt+ +throw StackOverflowError+ +shutdown -r now+
    2. ...
    3. +I'm completly operational, and all my circuits are functioning perfectly.+


    Vielleicht solltest Du mal versuchen, die Sache langsamer angehen zu lassen und Deine Probleme schrittweise zu lösen. Der Hinweis von tomekcp klingt vielversprechend. ;)
    „Meine Komplikation hatte eine Komplikation.“
  • Da muss ich ein Dank an dich (macmoonshine), Amin und Aaron Hillegass aussprechen.

    Die Bücher von euch sind Klasse und ich habe viel gelernt!

    Und ehrlich gesagt sollte man sich die Zeit nehmen und die Bücher richtig durcharbeiten, danach wird es einfacher beim Programmieren!
    LG Thomas
  • Nachdem ich nun aus meinem Tiefschlaf nach nem anstrengenden 24h-Dienst erwacht bin,
    werde ich mich gleich mal ransetzen und tomekcp's Ansatz probieren :)

    Ich habe eben gesehen, dass meine Antwort von heut Nacht, nicht einen Absatz hat. Ich hab es via TapaTalk geschrieben. Sorry für dafür!!

    Von macmoonshine gibt es ein Buch? WOOOO? Ich kaufe es SOFORT!!

    TWEAK

    Edit: VIELEN DANK tomekcp !! Es funktioniert auf Anhieb. :)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Tweak ()