Stille Authentifizierung Asynchrone Implementierung

Einführung

Eine asynchrone Implementierung ähnelt sehr der synchron Methode; anstatt den Geräte-Client zu verwenden, um eine Reihe von Aufrufen zu tätigen, wird jeder Teil des Arbeitsablaufs in Webhook-Rückrufe an eine von Ihnen definierte URL gesendet.

Dieser Leitfaden erklärt, wie die stille Authentifizierung mit dem asynchronen Ansatz implementiert wird, bei dem Ihr Backend einen Callback einrichtet, um das Authentifizierungsergebnis zu erhalten.

Erstellen einer Applikation

Um zu beginnen, besuchen Sie die Seite Entwickler-Dashboard um Ihre Anwendung zu erstellen:

  • Vergewissern Sie sich, dass Verify unter "Fähigkeiten" aktiviert ist.
  • Konfigurieren Sie die Status-URL für den Empfang von Callback-Ereignissen.
  • Erzeugen einer JWT unter Verwendung der Anwendungs-ID und des privaten Schlüssels der Anwendung.

Trigger-Verifizierung

Um den Prozess der stillen Authentifizierung zu starten, stellen Sie eine Anfrage an /verify. Im folgenden Beispiel wird die Arbeitsablauf legt fest, dass Verify zunächst versucht, die stille Authentifizierung zu verwenden. Wenn die Anfrage aus irgendeinem Grund fehlschlägt, wird auf SMS zurückgegriffen, gefolgt von einem OTP per Sprachanruf.

Um das Beispiel auszuführen, ersetzen Sie die folgenden Variablen im Beispielcode durch Ihre eigenen Werte:

Variabel Beschreibung
JWT Authentifiziert die API-Anfrage mit JWT.
VERIFY_BRAND_NAME Der Name Ihres Unternehmens oder Ihrer Dienstleistung, der dem Nutzer in der Bestätigungsnachricht angezeigt wird.
VONAGE_APPLICATION_PRIVATE_KEY_PATH Pfad zum privaten Schlüssel Ihrer Anwendung.
VONAGE_APPLICATION_ID Application ID Ihrer Anwendung.
VERIFY_NUMBER Die Telefonnummer, an die das OTP gesendet werden soll, im E.164-Format (z. B., +441112233447).

Schreiben Sie den Code

Fügen Sie Folgendes zu request.sh hinzu:

curl -X POST "https://api.nexmo.com/v2/verify" \
  -H "Authorization: Bearer $JWT"\
  -H 'Content-Type: application/json' \
  -d $'{
	 "brand": "'$VERIFY_BRAND_NAME'",
   "workflow": [
      {
         "channel": "silent_auth",
         "to": "'$VERIFY_NUMBER'"
      },
      {
         "channel": "sms",
         "to": "'$VERIFY_NUMBER'"
      },
      {
         "channel": "voice",
         "to": "'$VERIFY_NUMBER'"
      }
   ]
}'

Vollständige Quelle anzeigen

Führen Sie Ihren Code aus

Speichern Sie diese Datei auf Ihrem Rechner und führen Sie sie aus:

sh request.sh

Voraussetzungen

npm install @vonage/server-sdk @vonage/verify2

Erstellen Sie eine Datei mit dem Namen send-request-with-fallback.js und fügen Sie den folgenden Code hinzu:

const { Vonage } = require('@vonage/server-sdk');
const { Channels, SilentAuthChannel } = require('@vonage/verify2');

const vonage = new Vonage({
  applicationId: VONAGE_APPLICATION_ID,
  privateKey: VONAGE_APPLICATION_PRIVATE_KEY_PATH,
});

Vollständige Quelle anzeigen

Schreiben Sie den Code

Fügen Sie Folgendes zu send-request-with-fallback.js hinzu:

vonage.verify2.newRequest({
  brand: VERIFY_BRAND_NAME,
  workflow: [
    {
      channel: SilentAuthChannel.SILENT_AUTH,
      to: VERIFY_NUMBER,
    },
    {
      channel: Channels.SMS,
      to: VERIFY_NUMBER,
    },
    {
      channel: Channels.VOICE,
      to: VERIFY_NUMBER,
    },
  ],
})
  .then(({requestId}) => console.log(requestId))
  .catch((err) => console.error(err));

Vollständige Quelle anzeigen

Führen Sie Ihren Code aus

Speichern Sie diese Datei auf Ihrem Rechner und führen Sie sie aus:

node send-request-with-fallback.js

Voraussetzungen

Fügen Sie Folgendes zu build.gradle hinzu:

implementation 'com.vonage:server-sdk-kotlin:2.1.1'

Erstellen Sie eine Datei mit dem Namen SendVerificationRequestWithFallback und fügen Sie den folgenden Code in die Methode main ein:

val client = Vonage {
    applicationId(VONAGE_APPLICATION_ID)
    privateKeyPath(VONAGE_PRIVATE_KEY_PATH)
}

Vollständige Quelle anzeigen

Schreiben Sie den Code

Fügen Sie der Methode main in der Datei SendVerificationRequestWithFallback Folgendes hinzu:

val response = client.verify.sendVerification(VERIFY_BRAND_NAME) {
    silentAuth(VERIFY_NUMBER)
    sms(VERIFY_NUMBER)
    voice(VERIFY_NUMBER)
}

Vollständige Quelle anzeigen

Führen Sie Ihren Code aus

Wir können das Anmeldung Plugin für Gradle verwenden, um die Ausführung unserer Anwendung zu vereinfachen. Aktualisieren Sie Ihre build.gradle mit dem Folgenden:

apply plugin: 'application'
mainClassName = project.hasProperty('main') ? project.getProperty('main') : ''

Führen Sie den folgenden Befehl gradle aus, um Ihre Anwendung auszuführen, und ersetzen Sie dabei com.vonage.quickstart.kt.verify durch das Paket, das SendVerificationRequestWithFallback enthält:

gradle run -Pmain=com.vonage.quickstart.kt.verify.SendVerificationRequestWithFallback

Voraussetzungen

Fügen Sie Folgendes zu build.gradle hinzu:

implementation 'com.vonage:server-sdk:9.3.1'

Erstellen Sie eine Datei mit dem Namen SendRequestWithFallback und fügen Sie den folgenden Code in die Methode main ein:

VonageClient client = VonageClient.builder()
		.applicationId(VONAGE_APPLICATION_ID)
		.privateKeyPath(VONAGE_PRIVATE_KEY_PATH)
		.build();

Vollständige Quelle anzeigen

Schreiben Sie den Code

Fügen Sie der Methode main in der Datei SendRequestWithFallback Folgendes hinzu:

VerificationResponse response = client.getVerify2Client().sendVerification(
		VerificationRequest.builder()
			.addWorkflow(new SilentAuthWorkflow(VERIFY_NUMBER))
			.addWorkflow(new SmsWorkflow(VERIFY_NUMBER))
			.addWorkflow(new VoiceWorkflow(VERIFY_NUMBER))
			.brand(VERIFY_BRAND_NAME).build()
);

Vollständige Quelle anzeigen

Führen Sie Ihren Code aus

Wir können das Anmeldung Plugin für Gradle verwenden, um die Ausführung unserer Anwendung zu vereinfachen. Aktualisieren Sie Ihre build.gradle mit dem Folgenden:

apply plugin: 'application'
mainClassName = project.hasProperty('main') ? project.getProperty('main') : ''

Führen Sie den folgenden Befehl gradle aus, um Ihre Anwendung auszuführen, und ersetzen Sie dabei com.vonage.quickstart.verify2 durch das Paket, das SendRequestWithFallback enthält:

gradle run -Pmain=com.vonage.quickstart.verify2.SendRequestWithFallback

Voraussetzungen

Install-Package Vonage

Erstellen Sie eine Datei mit dem Namen StartVerificationRequestWithFallback.cs und fügen Sie den folgenden Code hinzu:

using Vonage;
using Vonage.Request;
using Vonage.VerifyV2.StartVerification;
using Vonage.VerifyV2.StartVerification.Sms;
using Vonage.VerifyV2.StartVerification.Voice;
using Vonage.VerifyV2.StartVerification.SilentAuth;

Vollständige Quelle anzeigen

Fügen Sie Folgendes zu StartVerificationRequestWithFallback.cs hinzu:

var credentials = Credentials.FromAppIdAndPrivateKeyPath(VONAGE_APPLICATION_ID, VONAGE_APPLICATION_PRIVATE_KEY_PATH);
var client = new VonageClient(credentials);

Vollständige Quelle anzeigen

Schreiben Sie den Code

Fügen Sie Folgendes zu StartVerificationRequestWithFallback.cs hinzu:

var request = StartVerificationRequest.Build()
    .WithBrand(BRAND_NAME)
    .WithWorkflow(SilentAuthWorkflow.Parse(TO_NUMBER))
    .WithFallbackWorkflow(SmsWorkflow.Parse(TO_NUMBER))
    .WithFallbackWorkflow(VoiceWorkflow.Parse(TO_NUMBER))
    .Create();
var response = await client.VerifyV2Client.StartVerificationAsync(request);

Vollständige Quelle anzeigen

Voraussetzungen

composer require vonage/client

Erstellen Sie eine Datei mit dem Namen request.php und fügen Sie den folgenden Code hinzu:

$client = new Vonage\Client(
    new Vonage\Client\Credentials\Keypair(VONAGE_APPLICATION_PRIVATE_KEY_PATH, VONAGE_APPLICATION_ID),
);

Vollständige Quelle anzeigen

Schreiben Sie den Code

Fügen Sie Folgendes zu request.php hinzu:

$newRequest = new \Vonage\Verify2\Request\SilentAuthRequest(VERIFY_NUMBER, VERIFY_BRAND_NAME);
$smsWorkflow = new \Vonage\Verify2\VerifyObjects\VerificationWorkflow(\Vonage\Verify2\VerifyObjects\VerificationWorkflow::WORKFLOW_SMS, VERIFY_NUMBER);
$newRequest->addWorkflow($smsWorkflow);
$voiceWorkflow = new \Vonage\Verify2\VerifyObjects\VerificationWorkflow(\Vonage\Verify2\VerifyObjects\VerificationWorkflow::WORKFLOW_VOICE, VERIFY_NUMBER);
$newRequest->addWorkflow($voiceWorkflow);

$client->verify2()->startVerification($newRequest);

Vollständige Quelle anzeigen

Führen Sie Ihren Code aus

Speichern Sie diese Datei auf Ihrem Rechner und führen Sie sie aus:

php request.php

Voraussetzungen

pip install vonage python-dotenv

Schreiben Sie den Code

Fügen Sie Folgendes zu send-request-with-fallback.py hinzu:

from vonage import Auth, Vonage
from vonage_verify import (SmsChannel, VoiceChannel, SilentAuthChannel,
                           StartVerificationResponse, VerifyRequest)

client = Vonage(
    Auth(
        application_id=VONAGE_APPLICATION_ID,
        private_key=VONAGE_PRIVATE_KEY,
    )
)

verify_request = VerifyRequest(
    brand=VERIFY_BRAND_NAME,
    workflow=[
        SilentAuthChannel(to=VERIFY_NUMBER),
        SmsChannel(to=VERIFY_NUMBER),
        VoiceChannel(to=VERIFY_NUMBER),
    ],
)

response: StartVerificationResponse = client.verify.start_verification(verify_request)
pprint(response)

Vollständige Quelle anzeigen

Führen Sie Ihren Code aus

Speichern Sie diese Datei auf Ihrem Rechner und führen Sie sie aus:

python verify/send-request-with-fallback.py

Voraussetzungen

gem install vonage

Erstellen Sie eine Datei mit dem Namen request.rb und fügen Sie den folgenden Code hinzu:

client = Vonage::Client.new(
  application_id: VONAGE_APPLICATION_ID,
  private_key: VONAGE_PRIVATE_KEY
)

Vollständige Quelle anzeigen

Schreiben Sie den Code

Fügen Sie Folgendes zu request.rb hinzu:

client.verify2.start_verification(
  brand: VERIFY_BRAND_NAME,
  workflow: [
    {
      channel: 'silent_auth',
      to: VERIFY_NUMBER
    },
    {
      channel: 'sms',
      to: VERIFY_NUMBER
    },
    {
      channel: 'voice',
      to: VERIFY_NUMBER
    }
  ]
)

Vollständige Quelle anzeigen

Führen Sie Ihren Code aus

Speichern Sie diese Datei auf Ihrem Rechner und führen Sie sie aus:

ruby request.rb

Antwort

Wenn die Anfrage erfolgreich ist, gibt die Antwort HTTP 200 mit dem check_url im Körper, die wir im nächsten Schritt benötigen:

HTTP/1.1 200 Ok 
{
  "request_id": "470b478f-334c-4f6f-b90d-b44e77ed24bf",
  "check_url": "https://api-eu-4.vonage.com/v2/verify/470b478f-334c-4f6f-aaab-b4a342aed24bf/silent-auth/redirect"
}

Liegt ein Fehler in der Anfrage vor, z. B. eine falsch formatierte Telefonnummer, enthält die Antwort eine HTTP 422 Fehler wie dieser:

HTTP/1.1 422 Unprocessable Entity 
{
  "title": "Invalid params",
  "detail": "The value of one or more parameters is invalid",
  "instance": "b30db5a7-338e-402e-aa5a-40073a9aa07c",
  "type": "https://developer.vonage.com/en/api-errors#invalid-params",
  "invalid_parameters": [
    {
      "name": "workflow[0]",
      "reason": "`to` Phone number is invalid"
    }
  ]
}

Da wir die asynchrone Implementierung verwenden, erhalten Sie parallel zur API-Antwort eine Rückruf (oder Webhook) an die in den Einstellungen Ihrer Dashboard-Anwendung angegebene URL, um Sie über den Fortschritt der Anfrage zu informieren.

Während des API-Aufrufs an /verifyführt die Verify-API interne Vorprüfungen durch. Wenn alles in Ordnung ist, enthält der Callback den folgenden Body:

HTTP/1.1 200 Ok 
{
  "request_id": "21a425df-04b2-43f2-990e-b19ee22e18a0",
  "triggered_at": "2025-07-14T17:01:47.032Z",
  "channel": "silent_auth",
  "status": "action_pending",
  "action": {
    "type": "check",
    "check_url": "https://api-eu-4.vonage.com/v2/verify/21a425df-04b2-43f2-990e-b19ee22e18a0/silent-auth/redirect"
  },
  "type": "event"
}

Bis der Antrag abläuft oder storniert wird, check_url wird verwendet, um eine Überprüfung der stillen Authentifizierung durchzuführen, indem Senden der Auth-URL. Wenn Sie diesen Rückruf erhalten, müssen Sie eine GET-Anfrage an die check_url von dem mobilen Gerät, das Sie zu authentifizieren versuchen.

Das ist wichtig: Die check_url Anfrage muss über eine mobile Datenverbindung (nicht Wi-Fi) ausgeführt werden. Die empfohlene Methode, dies sicherzustellen, ist die Verwendung des Vonage Client SDK (iOS oder Android), das die Anfrage automatisch über das Mobilfunknetz des Geräts leitet. Siehe die Anleitung zur Umgehung von Wi-Fi für die stille Authentifizierung für weitere Einzelheiten.

Wenn eine dieser Vorprüfungen fehlschlägt, z. B. aufgrund eines Netzwerkfehlers oder eines nicht unterstützten Operators, sieht der Callback wie folgt aus:

HTTP/1.1 200 Ok 
{
  request_id: "470b478f-334c-4f6f-b90d-b44e77ed24bf",
  triggered_at: "2025-07-14T16:53:16.965Z",
  channel: "silent_auth",
  status: "failed",
  type: "event"
}

Wenn Ihr /verify Anfrage einen Rückfallkanal enthält, verwendet Verify diesen Kanal weiter, wie im folgenden Sequenzdiagramm dargestellt:

Auth URL senden

Sobald Sie die GET-Anfrage gestellt haben, erhalten Sie eine oder mehrere HTTP 302 Umleitungen je nach Gebiet und Träger des Zielgeräts:

HTTP/1.1 302 Found
Location: https://eu.api.silentauth.com/phone_check/v0.2/checks/31eaf23d-b2db-4c42-9d1d-e847e75ab330/redirect

Die Befolgung der Weiterleitungen führt entweder zu einer HTTP 200 oder HTTP 4xx Antwort je nach Ergebnis. Wenn es ein Problem mit dem Netzwerk gibt, könnten Sie eine Antwort wie diese sehen:

HTTP/1.1 412 Precondition Failed
Content-Type: application/json

{
  "title": "Network not supported",
  "detail": "Device number does not resolve to a supported Mobile Network Operator.",
  "instance": "78e23b55-1633-465e-9325-6abcf186dd00",
  "type": "https://developer.vonage.com/en/api-errors/verify-v2#precondition-failed"
}

Eine vollständige Liste der möglichen Fehlercodes finden Sie in der API-Spezifikation.

Die Timeout-Verwaltung Abschnitt des Leitfadens zu bewährten Verfahren enthält nützliche Informationen zum Umgang mit Situationen wie Netzsignal- oder Netzabdeckungsproblemen während dieses Schritts.

Wenn die Anfrage gültig ist, erhalten Sie eine HTTP 200 Antwort mit Ihrer request_id und eine code:

{
  "request_id": "c11236f4-00bf-4b89-84ba-88b25df97315",
  "code": "si9sfG"
}

Hinweis: Um eine sichere Authentifizierungsprüfung zu gewährleisten und einen möglichen Man-in-the-Middle-Angriff abzuschwächen, speichern Sie das Original request_id und vergleichen Sie es mit dem request_id die in der Antwort zurückgegeben werden. Wenn die IDs nicht übereinstimmen, sollte die stille Authentifizierungsprüfung abgebrochen werden. Siehe unsere Beispielanwendung für eine Beispielimplementierung, wie der Angriff abgewehrt werden kann.

Überprüfen Sie den Verifizierungscode

Sobald der Endbenutzer den Code erhält, muss Ihre Client-Anwendung eine POST-Anfrage an die /v2/verify/{request_id} Endpunkt und ersetzt damit {request_id} mit der ID, die Sie beim letzten Anruf erhalten haben.

Um das Beispiel auszuführen, ersetzen Sie die folgenden Variablen im Beispielcode durch Ihre eigenen Werte:

Variabel Beschreibung
JWT Authentifiziert die API-Anfrage mit JWT.
VERIFY_REQUEST_ID Die request_id die Sie im vorherigen Schritt erhalten haben.
VONAGE_APPLICATION_PRIVATE_KEY_PATH Privater Schlüssel Ihrer Anwendung.
VONAGE_APPLICATION_ID Application ID Ihrer Anwendung.
VERIFY_CODE Der vom Endnutzer erhaltene Verifizierungscode

Schreiben Sie den Code

Fügen Sie Folgendes zu check-verification-code.sh hinzu:

curl -X POST "https://api.nexmo.com/v2/verify/$VERIFY_REQUEST_ID" \
  -H "Authorization: Bearer $JWT"\
  -H 'Content-Type: application/json' \
  -d $'{
    "code": "'$VERIFY_CODE'"
  }'

Vollständige Quelle anzeigen

Führen Sie Ihren Code aus

Speichern Sie diese Datei auf Ihrem Rechner und führen Sie sie aus:

sh check-verification-code.sh

Voraussetzungen

npm install @vonage/server-sdk

Erstellen Sie eine Datei mit dem Namen check-verification-code.js und fügen Sie den folgenden Code hinzu:

const { Vonage } = require('@vonage/server-sdk');

const vonage = new Vonage ({
  applicationId: VONAGE_APPLICATION_ID,
  privateKey: VONAGE_APPLICATION_PRIVATE_KEY_PATH,
});

Vollständige Quelle anzeigen

Schreiben Sie den Code

Fügen Sie Folgendes zu check-verification-code.js hinzu:

vonage.verify2.checkCode(VERIFY_REQUEST_ID, VERIFY_CODE)
  .then((status) => console.log(`The status is ${status}`),
  )
  .catch((err) => console.error(err));

Vollständige Quelle anzeigen

Führen Sie Ihren Code aus

Speichern Sie diese Datei auf Ihrem Rechner und führen Sie sie aus:

node check-verification-code.js

Voraussetzungen

Fügen Sie Folgendes zu build.gradle hinzu:

implementation 'com.vonage:server-sdk-kotlin:2.1.1'

Erstellen Sie eine Datei mit dem Namen CheckVerificationCode und fügen Sie den folgenden Code in die Methode main ein:

val client = Vonage {
    applicationId(VONAGE_APPLICATION_ID)
    privateKeyPath(VONAGE_PRIVATE_KEY_PATH)
}

Vollständige Quelle anzeigen

Schreiben Sie den Code

Fügen Sie der Methode main in der Datei CheckVerificationCode Folgendes hinzu:

if (client.verify.request(VERIFY_REQUEST_ID).isValidVerificationCode(VERIFY_CODE)) {
    println("Code matches.")
}

Vollständige Quelle anzeigen

Führen Sie Ihren Code aus

Wir können das Anmeldung Plugin für Gradle verwenden, um die Ausführung unserer Anwendung zu vereinfachen. Aktualisieren Sie Ihre build.gradle mit dem Folgenden:

apply plugin: 'application'
mainClassName = project.hasProperty('main') ? project.getProperty('main') : ''

Führen Sie den folgenden Befehl gradle aus, um Ihre Anwendung auszuführen, und ersetzen Sie dabei com.vonage.quickstart.kt.verify durch das Paket, das CheckVerificationCode enthält:

gradle run -Pmain=com.vonage.quickstart.kt.verify.CheckVerificationCode

Voraussetzungen

Fügen Sie Folgendes zu build.gradle hinzu:

implementation 'com.vonage:server-sdk:9.3.1'

Erstellen Sie eine Datei mit dem Namen CheckVerificationCode und fügen Sie den folgenden Code in die Methode main ein:

VonageClient client = VonageClient.builder()
		.applicationId(VONAGE_APPLICATION_ID)
		.privateKeyPath(VONAGE_PRIVATE_KEY_PATH)
		.build();

Vollständige Quelle anzeigen

Schreiben Sie den Code

Fügen Sie der Methode main in der Datei CheckVerificationCode Folgendes hinzu:

try {
	client.getVerify2Client().checkVerificationCode(VERIFY_REQUEST_UUID, VERIFY_CODE);
	System.out.println("SUCCESS - code matches!");
}
catch (VerifyResponseException ex) {
	switch (ex.getStatusCode()) {
		case 400: // Code does not match
		case 404: // Already verified or not found
		case 409: // Workflow does not support code
		case 410: // Incorrect code provided too many times
		case 429: // Rate limit exceeded
		default:  // Unknown or internal server error (500)
			ex.printStackTrace();
	}
}

Vollständige Quelle anzeigen

Führen Sie Ihren Code aus

Wir können das Anmeldung Plugin für Gradle verwenden, um die Ausführung unserer Anwendung zu vereinfachen. Aktualisieren Sie Ihre build.gradle mit dem Folgenden:

apply plugin: 'application'
mainClassName = project.hasProperty('main') ? project.getProperty('main') : ''

Führen Sie den folgenden Befehl gradle aus, um Ihre Anwendung auszuführen, und ersetzen Sie dabei com.vonage.quickstart.verify2 durch das Paket, das CheckVerificationCode enthält:

gradle run -Pmain=com.vonage.quickstart.verify2.CheckVerificationCode

Voraussetzungen

Install-Package Vonage

Erstellen Sie eine Datei mit dem Namen VerifyCodeRequest.cs und fügen Sie den folgenden Code hinzu:

using Vonage;
using Vonage.Request;

Vollständige Quelle anzeigen

Fügen Sie Folgendes zu VerifyCodeRequest.cs hinzu:

var credentials = Credentials.FromAppIdAndPrivateKeyPath(VONAGE_APPLICATION_ID, VONAGE_APPLICATION_PRIVATE_KEY_PATH);
var client = new VonageClient(credentials);

Vollständige Quelle anzeigen

Schreiben Sie den Code

Fügen Sie Folgendes zu VerifyCodeRequest.cs hinzu:

var request = Vonage.VerifyV2.VerifyCode.VerifyCodeRequest.Build()
    .WithRequestId(REQUEST_ID)
    .WithCode(CODE)
    .Create();
var response = await client.VerifyV2Client.VerifyCodeAsync(request);

Vollständige Quelle anzeigen

Voraussetzungen

composer require vonage/client

Erstellen Sie eine Datei mit dem Namen send_code.php und fügen Sie den folgenden Code hinzu:

$client = new Vonage\Client(
    new Vonage\Client\Credentials\Keypair(VONAGE_APPLICATION_PRIVATE_KEY_PATH, VONAGE_APPLICATION_ID),
);

Vollständige Quelle anzeigen

Schreiben Sie den Code

Fügen Sie Folgendes zu send_code.php hinzu:

try {
    $client->verify2()->check(REQUEST_ID, CODE);
} catch (\Exception $e) {
    var_dump($e->getMessage());
}

Vollständige Quelle anzeigen

Führen Sie Ihren Code aus

Speichern Sie diese Datei auf Ihrem Rechner und führen Sie sie aus:

php send_code.php

Voraussetzungen

pip install vonage python-dotenv

Schreiben Sie den Code

Fügen Sie Folgendes zu check-verification-code.py hinzu:

from vonage import Auth, Vonage
from vonage_verify import CheckCodeResponse

client = Vonage(
    Auth(
        application_id=VONAGE_APPLICATION_ID,
        private_key=VONAGE_PRIVATE_KEY,
    )
)

response: CheckCodeResponse = client.verify.check_code(
    request_id=VERIFY_REQUEST_ID, code=VERIFY_CODE
)
print(response)

Vollständige Quelle anzeigen

Führen Sie Ihren Code aus

Speichern Sie diese Datei auf Ihrem Rechner und führen Sie sie aus:

python verify/check-verification-code.py

Voraussetzungen

gem install vonage

Erstellen Sie eine Datei mit dem Namen check.rb und fügen Sie den folgenden Code hinzu:

client = Vonage::Client.new(
  application_id: VONAGE_APPLICATION_ID,
  private_key: VONAGE_PRIVATE_KEY
)

Vollständige Quelle anzeigen

Schreiben Sie den Code

Fügen Sie Folgendes zu check.rb hinzu:

client.verify2.check_code(
  request_id: VERIFY_REQUEST_ID,
  code: VERIFY_CODE
)

Vollständige Quelle anzeigen

Führen Sie Ihren Code aus

Speichern Sie diese Datei auf Ihrem Rechner und führen Sie sie aus:

ruby check.rb

Hinweis: Ein Code für einen Workflow zur stillen Authentifizierung kann nur geprüft werden einmal.

Wenn der Code gültig ist, erhalten Sie einen Rückruf mit dem Status completed:

{
   "request_id": "31eaf23d-b2db-4c42-9d1d-e847e75ab330",
   "status": "completed"
}

Wenn ein Fehler auftritt, wird "Ungültiger Code" angezeigt:

{
   "title": "Invalid Code",
   "type": "https://www.developer.vonage.com/api-errors/verify#invalid-code",
   "detail": "The code you provided does not match the expected value.",
   "instance": "bf0ca0bf927b3b52e3cb03217e1a1ddf"
}

Sie erhalten dann einen letzten Rückruf mit dem Ergebnis der Prüfung. Im Erfolgsfall erhalten Sie einen Callback mit "status": "completed":

{
    "request_id": "c11236f4-00bf-4b89-84ba-88b25df97315",
    "triggered_at": "2020-01-01T14:00:00.000Z",
    "type": "event",
    "channel": "silent_auth",
    "status": "completed",
}

Ist dies nicht der Fall, z. B. wenn der Benutzer abgewiesen wurde, wird dies in der status Feld:

{
    "request_id": "c11236f4-00bf-4b89-84ba-88b25df97315",
    "triggered_at": "2020-01-01T14:00:00.000Z",
    "type": "event",
    "channel": "silent_auth",
    "status": "user_rejected",
}

An diesem Punkt ist die Überprüfung der stillen Authentifizierung abgeschlossen.

Weiterführende Ressourcen