it-swarm.com.de

Registrieren Sie Benutzer bei Diensten (JSON) mit benutzerdefinierten Feldern

Ich versuche, einen neuen Benutzer auf Drupal7 über Dienste bei JSON zu registrieren. Eigentlich poste ich Informationen von Java (Android) mit JSON-Format) auf dem Server mit aktiviertem Servicemodul. Ein Beispiel für einen erfolgreichen JSON-Beitrag ist:

    {
    "name": "erfan",
    "pass": "1234",
    "mail": "[email protected]",
    "status": "1"
     }

RL : [siteURL]/[Endpunkt]/Benutzer/Register

Es ist mir gelungen, Benutzer mit grundlegenden Informationen wie Name, E-Mail-Adresse und Status zu erstellen.

Ich habe der Website benutzerdefinierte Felder wie field_address, field_phone Usw. hinzugefügt und möchte diese über JSON an den Server senden.

Das Problem ist, dass ich nicht herausfinden kann, wie diese Daten auf dem Server veröffentlicht werden sollen, und keine Dokumentation dazu finden konnte. Mein Versuch-und-Irrtum-Ansatz war auch nicht erfolgreich, weil ich nicht gut in PHP Codierung) bin. Also bitte helfen Sie mir. Danke.

4
erfannf2

Hoffe das wird dir helfen,

In Drupal 7) können Sie das folgende JSON-Format verwenden, um benutzerdefinierte Felder (field_user_image)

{
    "name": "test",
    "pass": "password",
    "mail": "[email protected]",
    "field_user_image": {
        "und": [{
            "fid": "2"
        }]
    }
}

Ich habe es in meinem Lokal versucht und es funktioniert gut.

  • Neues Feld erstellt [~ # ~] uuid [~ # ~]

    enter image description here

  • Aufrufen des Dienstes mit dem Add-On Firefox-Poster

    enter image description here

  • Code


  { 
    "name": "testuser123", 
    "pass": "testuser123", 
    "mail": "[email protected]", 
    "field_register_uuid": 
      { "und": 
        [{ 
          "value": "65C7DCA4-8F03-473C-9E8F-08B3F29E91AE" 
        }] 
      }
  }

Ich kann mit dem benutzerdefinierten Feld einen neuen Benutzer erstellen

Verweise

4
inizio

Dies sollte ein Kommentar sein, aber ich habe nicht genug Ruf ...
Wenn Sie einen Benutzer erstellen, können Sie nur die Felder übergeben, die im Registrierungsformular angezeigt werden. Andernfalls müssen Sie zuerst den Benutzer registrieren und ihn dann mit den neuen Feldern aktualisieren, wie @ paul-m in seinem Kommentar sagte.

Um ein Feld im Registrierungsformular anzuzeigen, gehen Sie zu

konfiguration-> Personen-> Kontoeinstellungen-> Felder verwalten
Klicken Sie auf den Bearbeitungslink des gewünschten Felds und aktivieren Sie "Auf Benutzerregistrierungsformular anzeigen".

2
lastYorsh

Der Feldwert muss möglicherweise "abgeflacht" werden, damit die Benutzerregistrierung funktioniert. Im folgenden Beispiel ist das Feld ein List (text) Feld mit Optionsfeldern für das Widget.

  • POST ?q=[my-endpoint]/user/register.json
  • Inhaltstyp: application/json

JSON-Daten zu [~ # ~] post [~ # ~] :

{
  "name":"bob",
  "mail":"[email protected]",
  "conf_mail":"[email protected]",
  "pass":"secret",
  "pass2":"secret",
  "field_choices":"2"
}

Dies funktioniert auch für Optionsfelder:

"field_choices":{"und":"a"}

Wenn wir jedoch ein Auswahlliste Widget für dasselbe Feld verwenden, wird der JSON wie folgt gebildet:

"field_choices":{"und":[{"value":"2"}]}

Der obige JSON funktioniert nicht für Optionsfelder. Sie erhalten ein 406 - Not Acceptable An illegal choice has been detected. Please contact the site administrator. Dies ist eine Lektion und Erinnerung daran, dass das Services-Modul manchmal vom Widget Ihres Felds abhängig sein kann, wenn es um den erwarteten JSON geht.

2