J'ai essayé beaucoup trop de variantes pour les énumérer ici, mais le point de base est que je ne peux pas connecter l'utilisateur immédiatement après son inscription via les services. J'ai essayé une nouvelle installation de Drupal 7.33 avec uniquement les services 7.x.3.11 activés et les paramètres de ressources par défaut fournis par drupalgap 7.x.1.9
Lorsque je m'inscris en utilisant l'interface Drupal, l'utilisateur est créé, la session ouverte et j'atterris sur ma page de profil connectée.
contre.
Lorsque j'appelle le point de terminaison Services /services/user/register.json
, Drupal crée le compte mais la session ne persiste pas. Voir mes captures d'écran ci-dessous.
Comment puis-je A. faire en sorte que la session persiste pour les appels de ressources de service ultérieurs OU B. hook pour ajouter le mot de passe de l'utilisateur ou généré automatiquement dans la réponse json afin que je puisse resoumettre par programme le côté client du formulaire /login.json (qui persiste)?
Cette question comment l'utilisateur global $ pourrait-il être différent entre l'interface Drupal et le module Services? décrit mon même problème en utilisant LoginToboggan.
Dans ma capture d'écran, vous verrez une ligne de débogage appelée "debug de connexion". Il vient de la ligne 333 de "/sites/all/modules/logintoboggan/logintoboggan.module" où j'ai essayé tout cela en vain ...
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');
Réponses:
Vous ne savez pas si vous avez besoin d'une réponse à ce stade (ou si elle est même une), mais il semble que vous ayez activé "Exiger la vérification des e-mails lorsqu'un visiteur crée un compte"?
Dans votre image, dans la deuxième fenêtre (où vous voyez le message de drupal_set_message ()), il indique qu'un e-mail a été envoyé et vous devrez suivre les instructions pour obtenir le message complet.
Pour désactiver cette option, accédez à / admin / config / people / accounts et décochez Exiger la vérification des e-mails lorsqu'un visiteur crée un compte.
Si vous regardez la table des utilisateurs dans la base de données, la colonne d'état doit afficher un 1 pour activé, 0 pour désactivé (ce qui signifie qu'il n'a pas cliqué sur le lien dans l'e-mail).
J'espère que cela aide!
la source
Cela fonctionne bien pour moi, vous pouvez utiliser le code suivant
transmettez l'identifiant et le mot de passe de l'e-mail de l'utilisateur, puis il renverra toutes les valeurs requises comme l' identifiant de session, le nom de la session, le jeton, l'uid de l'utilisateur
la source