Ich habe viel zu viele Variationen ausprobiert, um sie hier aufzulisten, aber der grundlegende Punkt ist, dass ich den Benutzer nicht sofort nach der Registrierung über Services anmelden kann. Ich habe versucht, Drupal 7.33 neu zu installieren, wobei nur Services 7.x.3.11 aktiviert und die Standardressourceneinstellungen von drupalgap 7.x.1.9 bereitgestellt wurden
Wenn ich mich über die Drupal-Oberfläche registriere, wird der Benutzer erstellt, die Sitzung geöffnet und ich lande auf meiner angemeldeten Profilseite.
vs.
Wenn ich den Service-Endpunkt /services/user/register.json
aufrufe, erstellt Drupal das Konto, aber die Sitzung bleibt nicht bestehen. Siehe meine Screenshots unten.
Wie kann ich entweder A. die Sitzung für nachfolgende Serviceressourcenaufrufe fortsetzen lassen oder B. Hook, um das oder das automatisch generierte Kennwort des Benutzers wieder in die json-Antwort einzufügen, damit ich das Formular /login.json clientseitig programmgesteuert erneut senden kann (welches bleibt bestehen)?
Diese Frage: Wie kann sich der globale $ user zwischen der Drupal-Schnittstelle und dem Services-Modul unterscheiden? beschreibt mein gleiches Problem mit LoginToboggan.
In meinem Screenshot sehen Sie eine Debug-Zeile namens "Login Debug". Es kommt aus Zeile 333 von "/sites/all/modules/logintoboggan/logintoboggan.module", wo ich all dies ohne Erfolg versucht habe ...
function logintoboggan_process_login($account, &$edit, $redirect = array()){
global $user;
$user = user_load($account->uid);
//watchdog('login debug', json_encode($account));
watchdog('login debug', json_encode($edit));
//user_login_submit(array(), array('uid' => $account->uid));
user_login_finalize($edit);
// $user = user_load($account->uid);
// $user->token = drupal_get_token('services'); // WE HAVE A TOKEN ALTHOUGH I DOUBT THIS WOULD WORK IN TERMS OF SESSION PERSISTANCE
// user_login_finalize($edit);
// module_invoke_all('hook_user_login');
// module_invoke_all('tripchi_user_login');
// module_invoke_all('logintoboggan_user_login');
Antworten:
Sie sind sich nicht sicher, ob Sie zu diesem Zeitpunkt eine Antwort benötigen (oder ob dies überhaupt eine ist), aber es sieht so aus, als hätten Sie "E-Mail-Bestätigung erforderlich, wenn ein Besucher ein Konto erstellt" aktiviert?
In Ihrem Bild wird im zweiten Fenster (in dem Sie die Nachricht von drupal_set_message () sehen) angegeben, dass eine E-Mail gesendet wurde, und Sie müssen den Anweisungen folgen, um die vollständige Nachricht zu erhalten.
Um dies zu deaktivieren , navigieren Sie zu / admin / config / people / accounts und deaktivieren Sie die Option E-Mail-Bestätigung erforderlich, wenn ein Besucher ein Konto erstellt.
Wenn Sie sich die Benutzertabelle in der Datenbank ansehen, sollte in der Statusspalte eine 1 für aktiviert und eine 0 für deaktiviert angezeigt werden (was bedeutet, dass er nicht auf den Link in der E-Mail geklickt hat).
Ich hoffe es hilft!
quelle
Es funktioniert gut für mich, Sie können folgenden Code verwenden
Übergeben Sie die Benutzer-E-Mail-ID und das Kennwort. Anschließend werden alle erforderlichen Werte wie Sitzungs-ID, Sitzungsname, Token und Benutzer-UID zurückgegeben
quelle