Próbowałem o wiele za dużo odmian, aby wymienić tutaj, ale podstawową kwestią jest to, że nie mogę się zalogować do użytkownika natychmiast po rejestracji za pośrednictwem usług. Próbowałem świeżej instalacji Drupal 7.33 z włączonymi tylko usługami 7.x.3.11 i domyślnymi ustawieniami zasobów dostarczonymi przez drupalgap 7.x.1.9
Kiedy rejestruję się za pomocą interfejsu Drupal, użytkownik zostaje utworzony, sesja otwarta, i ląduję na mojej stronie profilu zalogowanej.
vs.
Kiedy nazywam punkt końcowy usług /services/user/register.json
, Drupal tworzy konto, ale sesja nie trwa. Zobacz moje zrzuty ekranu poniżej.
Jak mogę A. doprowadzić do utrwalenia sesji dla kolejnych wywołań zasobów usługi LUB B. przechwycić, aby dodać hasło użytkownika lub automatycznie wygenerowane hasło z powrotem do odpowiedzi json, aby móc programowo ponownie przesłać plik /login.json po stronie klienta (który trwa)?
To pytanie, w jaki sposób globalny użytkownik $ może się różnić między interfejsem Drupal a modułem usług? opisuje mój ten sam problem za pomocą LoginToboggan.
Na moim zrzucie ekranu zobaczysz linię debugowania o nazwie „debugowanie logowania”. Pochodzi z wiersza 333 „/sites/all/modules/logintoboggan/logintoboggan.module”, gdzie próbowałem tego wszystkiego bezskutecznie ...
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');
Odpowiedzi:
Nie jesteś pewien, czy potrzebujesz odpowiedzi w tym momencie (lub jeśli jest to nawet jedna), ale wygląda na to, że masz włączoną opcję „Wymagaj weryfikacji przez e-mail, gdy użytkownik tworzy konto”?
Na twoim obrazie, w drugim oknie (gdzie widzisz wiadomość z drupal_set_message ()), mówi, że wysłano e-maila i będziesz musiał postępować zgodnie z instrukcjami, aby uzyskać pełną wiadomość.
Aby to wyłączyć, przejdź do / admin / config / people / account i usuń zaznaczenie opcji Wymagaj weryfikacji e-mail, gdy użytkownik utworzy konto.
Jeśli spojrzysz na tabelę użytkowników w bazie danych, kolumna stanu powinna pokazywać 1 dla włączonego, 0 dla wyłączonego (co oznacza, że nie kliknął łącza w wiadomości e-mail).
Mam nadzieję, że to pomoże!
źródło
Dla mnie działa dobrze, możesz użyć następującego kodu
przekaż identyfikator e-mail użytkownika i hasło, a następnie zwróci wszystkie wymagane wartości, takie jak identyfikator sesji, nazwa sesji, token, identyfikator użytkownika
źródło