ID Mobile — Nutzerdaten mit Zustimmung abrufen

Support DQE
Support DQE
  • Aktualisiert
ID Mobile API — Formfilling

Verwenden Sie diesen Endpunkt, um beim Betreiber registrierte Nutzerinformationen (Name, Geburtsdatum, E-Mail, Postanschrift) mit Zustimmung des Nutzers abzurufen. Der Vorgang umfasst zwei Schritte: Einleitung der Zustimmungsanfrage und anschließender Abruf der Daten.

Zweistufiger Ablauf - Rufen Sie zuerst /IDMOBILE/ auf, um die Zustimmung des Nutzers anzufordern und die URL der Zustimmungsseite des Betreibers zu erhalten. Sobald die Zustimmung erteilt wurde, rufen Sie /GET/ auf, um die Nutzerdaten abzurufen.

Zugehörige ID-Mobile-Dokumentation:

Schritt 1 von 2 — Zustimmung anfordern

Leiten Sie die Zustimmungsanfrage ein und erhalten Sie die URL der Zustimmungsseite des Betreibers.

Schritt 1 — Zustimmungsanfrage einleiten

Anfrage

Sowohl GET als auch POST werden unterstützt.

{SERVER_ADDRESS} und {LICENCE_CODE} werden von DQE bei der Kontoerstellung bereitgestellt. Wenden Sie sich an Ihren DQE-Kundenbetreuer, um diese Zugangsdaten zu erhalten.
GEThttps://{SERVER_ADDRESS}/IDMOBILE/?number={NUM}&token={TOKEN}&mode={MODE}&name={NAME}&code_name={CODE_NAME}&licence={LICENCE_CODE}&scope=formfilling&redirect_uri={URL_REDIRECT}

Codebeispiele

Zustimmung zum Abruf der Nutzerdaten anfordern

curl "https://{SERVER_ADDRESS}/IDMOBILE/?number={NUM}&token={TOKEN}&mode={MODE}&name={NAME}&code_name={CODE_NAME}&licence={LICENCE_CODE}&scope=formfilling&redirect_uri={URL_REDIRECT}"
fetch("https://{SERVER_ADDRESS}/IDMOBILE/?" + new URLSearchParams({ number: "{NUM}", token: "{TOKEN}", mode: "{MODE}", name: "{NAME}", code_name: "{CODE_NAME}", licence: "{LICENCE_CODE}", scope: "formfilling", redirect_uri: "{URL_REDIRECT}" })) .then(r => r.json()) .then(data => console.log(data));
import requests response = requests.get( "https://{SERVER_ADDRESS}/IDMOBILE/", params={ "number": "{NUM}", "token": "{TOKEN}", "mode": "{MODE}", "name": "{NAME}", "code_name": "{CODE_NAME}", "licence": "{LICENCE_CODE}", "scope": "formfilling", "redirect_uri": "{URL_REDIRECT}", }, ) print(response.json())
<?php $params = http_build_query([ 'number' => '{NUM}', 'token' => '{TOKEN}', 'mode' => '{MODE}', 'name' => '{NAME}', 'code_name' => '{CODE_NAME}', 'licence' => '{LICENCE_CODE}', 'scope' => 'formfilling', 'redirect_uri' => '{URL_REDIRECT}', ]); $ch = curl_init("https://{SERVER_ADDRESS}/IDMOBILE/?{$params}"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); curl_close($ch); $data = json_decode($response, true);
const axios = require('axios'); axios.get('https://{SERVER_ADDRESS}/IDMOBILE/', { params: { number: '{NUM}', token: '{TOKEN}', mode: '{MODE}', name: '{NAME}', code_name: '{CODE_NAME}', licence: '{LICENCE_CODE}', scope: 'formfilling', redirect_uri: '{URL_REDIRECT}' } }) .then(response => console.log(response.data));
HttpClient client = HttpClient.newHttpClient(); String url = "https://{SERVER_ADDRESS}/IDMOBILE/" + "?number={NUM}&token={TOKEN}&mode={MODE}&name={NAME}&code_name={CODE_NAME}&licence={LICENCE_CODE}&scope=formfilling&redirect_uri={URL_REDIRECT}"; HttpRequest request = HttpRequest.newBuilder() .uri(URI.create(url)) .GET() .build(); HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.body());
using var client = new HttpClient(); var url = "https://{SERVER_ADDRESS}/IDMOBILE/" + "?number={NUM}&token={TOKEN}&mode={MODE}&name={NAME}&code_name={CODE_NAME}&licence={LICENCE_CODE}&scope=formfilling&redirect_uri={URL_REDIRECT}"; var response = await client.GetAsync(url); var body = await response.Content.ReadAsStringAsync(); Console.WriteLine(body);
package main import ( "fmt" "io" "net/http" ) func main() { url := "https://{SERVER_ADDRESS}/IDMOBILE/" + "?number={NUM}&token={TOKEN}&mode={MODE}&name={NAME}&code_name={CODE_NAME}&licence={LICENCE_CODE}&scope=formfilling&redirect_uri={URL_REDIRECT}" resp, err := http.Get(url) if err != nil { panic(err) } defer resp.Body.Close() body, _ := io.ReadAll(resp.Body) fmt.Println(string(body)) }
POSThttps://{SERVER_ADDRESS}/IDMOBILE/

Fügen Sie die folgenden Parameter im Anfragetext im Format x-www-form-urlencoded hinzu.

Codebeispiele

Zustimmung zum Abruf der Nutzerdaten anfordern

curl -X POST "https://{SERVER_ADDRESS}/IDMOBILE/" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "licence={LICENCE_CODE}" \ -d "number={NUM}" \ -d "token={TOKEN}" \ -d "mode={MODE}" \ -d "name={NAME}" \ -d "code_name={CODE_NAME}" \ -d "scope=formfilling" \ -d "redirect_uri={URL_REDIRECT}"
fetch("https://{SERVER_ADDRESS}/IDMOBILE/", { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: new URLSearchParams({ licence: "{LICENCE_CODE}", number: "{NUM}", token: "{TOKEN}", mode: "{MODE}", name: "{NAME}", code_name: "{CODE_NAME}", scope: "formfilling", redirect_uri: "{URL_REDIRECT}" }) }) .then(r => r.json()) .then(data => console.log(data));
import requests response = requests.post( "https://{SERVER_ADDRESS}/IDMOBILE/", data={ "licence": "{LICENCE_CODE}", "number": "{NUM}", "token": "{TOKEN}", "mode": "{MODE}", "name": "{NAME}", "code_name": "{CODE_NAME}", "scope": "formfilling", "redirect_uri": "{URL_REDIRECT}", }, ) print(response.json())
<?php $ch = curl_init("https://{SERVER_ADDRESS}/IDMOBILE/"); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query([ 'licence' => '{LICENCE_CODE}', 'number' => '{NUM}', 'token' => '{TOKEN}', 'mode' => '{MODE}', 'name' => '{NAME}', 'code_name' => '{CODE_NAME}', 'scope' => 'formfilling', 'redirect_uri' => '{URL_REDIRECT}', ])); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); curl_close($ch); $data = json_decode($response, true);
const axios = require('axios'); const qs = require('querystring'); axios.post('https://{SERVER_ADDRESS}/IDMOBILE/', qs.stringify({ licence: '{LICENCE_CODE}', number: '{NUM}', token: '{TOKEN}', mode: '{MODE}', name: '{NAME}', code_name: '{CODE_NAME}', scope: 'formfilling', redirect_uri: '{URL_REDIRECT}' })) .then(response => console.log(response.data));
HttpClient client = HttpClient.newHttpClient(); String form = "licence={LICENCE_CODE}&number={NUM}&token={TOKEN}&mode={MODE}&name={NAME}&code_name={CODE_NAME}&scope=formfilling&redirect_uri={URL_REDIRECT}"; HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://{SERVER_ADDRESS}/IDMOBILE/")) .header("Content-Type", "application/x-www-form-urlencoded") .POST(HttpRequest.BodyPublishers.ofString(form)) .build(); HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.body());
using var client = new HttpClient(); var form = new Dictionary<string, string> { ["licence"] = "{LICENCE_CODE}", ["number"] = "{NUM}", ["token"] = "{TOKEN}", ["mode"] = "{MODE}", ["name"] = "{NAME}", ["code_name"] = "{CODE_NAME}", ["scope"] = "formfilling", ["redirect_uri"] = "{URL_REDIRECT}" }; var response = await client.PostAsync( "https://{SERVER_ADDRESS}/IDMOBILE/", new FormUrlEncodedContent(form)); var body = await response.Content.ReadAsStringAsync(); Console.WriteLine(body);
package main import ( "fmt" "io" "net/http" "net/url" ) func main() { form := url.Values{} form.Set("licence", "{LICENCE_CODE}") form.Set("number", "{NUM}") form.Set("token", "{TOKEN}") form.Set("mode", "{MODE}") form.Set("name", "{NAME}") form.Set("code_name", "{CODE_NAME}") form.Set("scope", "formfilling") form.Set("redirect_uri", "{URL_REDIRECT}") resp, err := http.PostForm("https://{SERVER_ADDRESS}/IDMOBILE/", form) if err != nil { panic(err) } defer resp.Body.Close() body, _ := io.ReadAll(resp.Body) fmt.Println(string(body)) }

Parameters

Parameter Beschreibung Pflicht/Opt
SERVER_ADDRESS Adresse des DQE-Servers, der die Daten verarbeitet. Pflicht
licence Ihnen zugewiesene Nummer als Lizenzcode. Pflicht
number Telefonnummer. Pflicht
token Durch Authentifizierung abgerufenes Token. Pflicht
mode 2: Authentifizierung per Code.
Fester Wert: 2
Pflicht
name Partnername in der DQE-Software-Datenbank, in der Regel Ihr Firmenname. Pflicht
code_name Optionales Feld mit einem Code, der name zugeordnet ist. Optional
scope Fester Wert. Muss für diesen Scope formfilling sein.
Fester Wert: formfilling
Pflicht
redirect_uri Weiterleitungs-URL. DQE fügt der Weiterleitung das Sitzungstoken und den Status hinzu. Optional
Scopes kombinieren — Der Parameter formfilling kann mit billing (beide sind zustimmungsbasiert) in einer einzigen Anfrage kombiniert werden, z. B. scope=formfilling,billing, sowie mit info (Telefonnummern-Intelligenz) in jeder Kombination, z. B. scope=formfilling,info. Siehe die info-Felder unten. Wenden Sie sich an Ihren DQE-Kundenbetreuer für Hinweise zur vollständigen kombinierten Antwortstruktur von formfilling+billing.

info-Zusatzfelder — werden zusätzlich zu den eigenen Feldern dieses Endpunkts zurückgegeben, wenn info im scope enthalten ist:

Feld Beschreibung Beispiel
telorigine Telefonnummer in der Anfrage. 0600000000
tel Formatierte Telefonnummer. +33600000000
geolocation Geografische Lage der Telefonnummer. FRANCE
operator Aktueller Betreiber der Telefonnummer, sofern vorhanden. ORANGE
oldoperator Vorheriger Betreiber der Telefonnummer. SFR
ported Gibt an, ob die Telefonnummer portiert wurde, sofern vorhanden. Y
type Art der Telefonnummer. MOBILE
iderror Fehlercode der Prüfung (0 oder 1). 1

Response

Bei Erfolg gibt die API ein JSON-Objekt mit den folgenden Schlüsseln zurück.

Schlüssel Beschreibung Typ
status success STRING
operator Betreiber. STRING
url URL der Betreiber-API. STRING

Response example

Erfolgreiche Zustimmungsanfrage
{ "status": "success", "operator": "Orange", "url": "https://api.operator/openidconnect/fr" }

Errors

Fehler-ID Fehlertyp Beschreibung
01 invalid request Die Anfrage ist ungültig.
02 invalid licence key Die Lizenz ist ungültig.
04 invalid scope Ungültiger Scope.
05 missing or empty parameter (user_infos) for this scope Für den angeforderten Scope fehlt ein Parameter.
06 bad parameter format (user_infos) is not a valid JSON Der Parameter user_infos ist kein gültiges JSON.
07 missing mandatory key in user informations (phone) Der Schlüssel phone ist im Parameter user_infos für diesen Betreiber Pflicht.
09 ineligible phone number Die Telefonnummer ist für diese Lösung nicht zulässig.
10 invalid phone number Die Telefonnummer existiert nicht.
11 phone number is empty Die Telefonnummer ist leer.
12 phone check failed Die Betreiberprüfung ist fehlgeschlagen.
13 operator [Operator Name] not found Der Betreiber konnte nicht gefunden werden.
14 operator [Operator Name] not authorized for this licence Ihre Lizenz ist für diesen Betreiber nicht autorisiert.
15 operator [Operator Name] not supported yet Die Lösung ist für diesen Betreiber noch nicht verfügbar.
16 operator [Operator Name] unreachable Der Betreiber konnte nicht kontaktiert werden.
17 scope not supported by this operator [Operator Name] yet Dieser Scope wird vom Betreiber nicht unterstützt.
30 invalid or expired token Das Token ist abgelaufen.

API testen

Klicken Sie auf die Schaltfläche unten, um diesen Endpunkt live in Ihrem Browser zu testen.

Konsole öffnen
Schritt 2 von 2 — Nutzerdaten abrufen

Sobald der Nutzer seine Zustimmung erteilt hat, rufen Sie die vom Betreiber zurückgegebenen Daten ab.

Schritt 2 — Nutzerdaten abrufen

Anfrage

Sowohl GET als auch POST werden unterstützt.

{SERVER_ADDRESS} und {LICENCE_CODE} werden von DQE bei der Kontoerstellung bereitgestellt. Wenden Sie sich an Ihren DQE-Kundenbetreuer, um diese Zugangsdaten zu erhalten.
GEThttps://{SERVER_ADDRESS}/GET/?token={TOKEN}&Licence={LICENCE_CODE}&scope=formfilling

Codebeispiele

Nutzerdaten nach erteilter Zustimmung abrufen

curl "https://{SERVER_ADDRESS}/GET/?token={TOKEN}&Licence={LICENCE_CODE}&scope=formfilling"
fetch("https://{SERVER_ADDRESS}/GET/?" + new URLSearchParams({ token: "{TOKEN}", Licence: "{LICENCE_CODE}", scope: "formfilling" })) .then(r => r.json()) .then(data => console.log(data));
import requests response = requests.get( "https://{SERVER_ADDRESS}/GET/", params={ "token": "{TOKEN}", "Licence": "{LICENCE_CODE}", "scope": "formfilling", }, ) print(response.json())
<?php $params = http_build_query([ 'token' => '{TOKEN}', 'Licence' => '{LICENCE_CODE}', 'scope' => 'formfilling', ]); $ch = curl_init("https://{SERVER_ADDRESS}/GET/?{$params}"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); curl_close($ch); $data = json_decode($response, true);
const axios = require('axios'); axios.get('https://{SERVER_ADDRESS}/GET/', { params: { token: '{TOKEN}', Licence: '{LICENCE_CODE}', scope: 'formfilling' } }) .then(response => console.log(response.data));
HttpClient client = HttpClient.newHttpClient(); String url = "https://{SERVER_ADDRESS}/GET/" + "?token={TOKEN}&Licence={LICENCE_CODE}&scope=formfilling"; HttpRequest request = HttpRequest.newBuilder() .uri(URI.create(url)) .GET() .build(); HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.body());
using var client = new HttpClient(); var url = "https://{SERVER_ADDRESS}/GET/" + "?token={TOKEN}&Licence={LICENCE_CODE}&scope=formfilling"; var response = await client.GetAsync(url); var body = await response.Content.ReadAsStringAsync(); Console.WriteLine(body);
package main import ( "fmt" "io" "net/http" ) func main() { url := "https://{SERVER_ADDRESS}/GET/" + "?token={TOKEN}&Licence={LICENCE_CODE}&scope=formfilling" resp, err := http.Get(url) if err != nil { panic(err) } defer resp.Body.Close() body, _ := io.ReadAll(resp.Body) fmt.Println(string(body)) }
POSThttps://{SERVER_ADDRESS}/GET/

Fügen Sie die folgenden Parameter im Anfragetext im Format x-www-form-urlencoded hinzu.

Codebeispiele

Nutzerdaten nach erteilter Zustimmung abrufen

curl -X POST "https://{SERVER_ADDRESS}/GET/" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "Licence={LICENCE_CODE}" \ -d "token={TOKEN}" \ -d "scope=formfilling"
fetch("https://{SERVER_ADDRESS}/GET/", { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: new URLSearchParams({ Licence: "{LICENCE_CODE}", token: "{TOKEN}", scope: "formfilling" }) }) .then(r => r.json()) .then(data => console.log(data));
import requests response = requests.post( "https://{SERVER_ADDRESS}/GET/", data={ "Licence": "{LICENCE_CODE}", "token": "{TOKEN}", "scope": "formfilling", }, ) print(response.json())
<?php $ch = curl_init("https://{SERVER_ADDRESS}/GET/"); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query([ 'Licence' => '{LICENCE_CODE}', 'token' => '{TOKEN}', 'scope' => 'formfilling', ])); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); curl_close($ch); $data = json_decode($response, true);
const axios = require('axios'); const qs = require('querystring'); axios.post('https://{SERVER_ADDRESS}/GET/', qs.stringify({ Licence: '{LICENCE_CODE}', token: '{TOKEN}', scope: 'formfilling' })) .then(response => console.log(response.data));
HttpClient client = HttpClient.newHttpClient(); String form = "Licence={LICENCE_CODE}&token={TOKEN}&scope=formfilling"; HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://{SERVER_ADDRESS}/GET/")) .header("Content-Type", "application/x-www-form-urlencoded") .POST(HttpRequest.BodyPublishers.ofString(form)) .build(); HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.body());
using var client = new HttpClient(); var form = new Dictionary<string, string> { ["Licence"] = "{LICENCE_CODE}", ["token"] = "{TOKEN}", ["scope"] = "formfilling" }; var response = await client.PostAsync( "https://{SERVER_ADDRESS}/GET/", new FormUrlEncodedContent(form)); var body = await response.Content.ReadAsStringAsync(); Console.WriteLine(body);
package main import ( "fmt" "io" "net/http" "net/url" ) func main() { form := url.Values{} form.Set("Licence", "{LICENCE_CODE}") form.Set("token", "{TOKEN}") form.Set("scope", "formfilling") resp, err := http.PostForm("https://{SERVER_ADDRESS}/GET/", form) if err != nil { panic(err) } defer resp.Body.Close() body, _ := io.ReadAll(resp.Body) fmt.Println(string(body)) }

Parameters

Parameter Beschreibung Pflicht/Opt
SERVER_ADDRESS Adresse des DQE-Servers, der die Daten verarbeitet. Pflicht
Licence Ihnen zugewiesene Nummer als Lizenzcode. Pflicht
token Durch Authentifizierung abgerufenes Token. Pflicht
scope Fester Wert. Muss für diesen Scope formfilling sein.
Fester Wert: formfilling
Pflicht

Antwort

Die API gibt ein JSON-Objekt mit den folgenden Schlüsseln zurück:

Schlüssel Beschreibung Typ
status success: Die Informationen wurden erfolgreich abgerufen. STRING
scope Enthält den zuvor gesendeten Scope. STRING
code_name Enthält den zuvor gesendeten Code-Namen. STRING
formfilling Objekt mit den abgerufenen Nutzerdaten. Siehe Schlüsseltabelle unten. JSON OBJECT

Schlüssel innerhalb des formfilling-Objekts

Schlüssel Beschreibung Typ
phone_number Telefonnummer. STRING(10)
family_name Nachname. STRING
name Vor- und Nachname. STRING
locale Muttersprache. STRING(3)
gender Geschlecht: M für männlich, F für weiblich. STRING
updated_at Datum der letzten Datenaktualisierung. DATE
birthdate Geburtsdatum. DATE
birthplace Geburts-Département. STRING
given_name Vorname. STRING
address Postanschrift-Objekt. Schlüssel: country, postal_code, formatted, street_address, number, locality. JSON OBJECT
email Vollständige E-Mail-Adresse. STRING
email_domain E-Mail-Domain. STRING
email_account E-Mail-Benutzername. STRING
subscriber_msisdn Für den Vertragsabschluss verwendete Telefonnummer. STRING(10)
sub Kundenkennung in der Betreiberdatenbank. STRING

Ausstehend

Schlüssel Beschreibung Typ
status pending: DQE wartet auf die Antwort des Betreibers. STRING
scope Enthält formfilling. STRING

Response example

Erfolgreicher Abruf
{ "status": "success", "scope": "formfilling", "code_name": "", "formfilling": { "phone_number": "", "family_name": "", "name": " -", "locale": "fr-FR", "gender": "M", "email_domain": ".com", "updated_at": "-08-09", "birthdate": "-08-30", "birthplace": "-08-30", "given_name": "", "address": { "locality": "", "country": "", "number": "", "formatted": "", "postal_code": "", "street_address": "" }, "email_account": "", "email": "", "subscriber_msisdn": "", "sub": "" } }
Ausstehend — Warten auf den Betreiber
{ "status": "pending", "scope": "formfilling" }
Fehler
{ "status": "error", "error_type": "internal server error", "error_id": "99" }

Errors

Fehler-ID Fehlertyp Beschreibung
01 invalid request Die Anfrage ist ungültig.
02 invalid licence key Die Lizenz ist ungültig.
04 invalid scope Ungültiger Scope.
18 failed to retrieve data from operator Nach der OTP-Validierung wurden keine Daten empfangen.
20 OTP incorrect Die OTP-Validierung wurde nicht abgeschlossen.
21 access denied Die OTP-Validierung wurde abgelehnt.
30 invalid or expired token Das Token ist abgelaufen.
99 internal server error Serverfehler.

API testen

Klicken Sie auf die Schaltfläche unten, um diesen Endpunkt live in Ihrem Browser zu testen.

Konsole öffnen

Siehe auch

War dieser Beitrag hilfreich?

0 von 0 fanden dies hilfreich