Ich versuche jetzt, den Datenspeicher zu verwenden, aber jedes Mal, wenn ich versuche, den Store zu aktualisieren, erhalte ich eine Fehlermeldung, dass ich die Client-ID nicht in den Skill-Metadaten finden kann.
Ich verwende die Client-ID und das Client-Geheimnis aus dem Abschnitt „Berechtigungen“ des Skills in der Alexa Developer Console und verwende dies und Im alexa::datastore-Bereich kann ich ein access_token autorisieren und erhalten.
Wenn ich jedoch versuche, die Datenspeicher-REST-API aufzurufen, um den Datenspeicher zu aktualisieren, schlägt dies mit der folgenden Fehlermeldung fehl:
Code: Select all
{
"type": "INVALID_ACCESS_TOKEN",
"message": "Unable to find the Client ID from skill metadata:amzn1.application-oa2-client.xxxxxxxxx"
}
Ich habe ein paar Tage damit verbracht, dies ohne Erfolg zum Laufen zu bringen.
Ich bin mir sicher, dass meine Client-ID und mein Client-Geheimnis korrekt sind, da die Autorisierung funktioniert, also fühlt es sich so an, als wäre es etwas anderes Konfigurationsproblem oder ein Plattformproblem, oder habe ich vielleicht einen erforderlichen Schritt übersehen?
Ich habe auch ein schnelles Powershell-Skript geschrieben, um die API zu testen, das Sie unten sehen können:
Code: Select all
$clientId = "your-client-id"
$clientSecret = "your-secret"
$body = @{
grant_type = "client_credentials"
client_id = $clientId
client_secret = $clientSecret
scope = "alexa::datastore"
}
$tokenResponse = Invoke-RestMethod `
-Uri "https://api.amazon.com/auth/o2/token" `
-Method Post `
-ContentType "application/x-www-form-urlencoded" `
-Body $body
$tokenResponse | Format-List *
$accessToken = $tokenResponse.access_token
$accessToken
$headers = @{
Authorization = "Bearer $accessToken"
"Content-Type" = "application/json"
"Charset" = "utf-8"
}
$timestamp = (Get-Date).ToUniversalTime().ToString("o")
$payloadObject = @{
commands = @(
@{
type = "WRITE"
namespace = "debug"
key = "ping"
data = @{ ts = $timestamp }
}
)
target = @{
type = "USERS"
users = @(
@{ userId = "dummy-user" }
)
}
}
$payloadJson = $payloadObject | ConvertTo-Json -Depth 10
$response = Invoke-WebRequest `
-Uri "https://api.amazonalexa.com/v1/datastore/commands" `
-Method Post `
-Headers $headers `
-Body $payloadJson
$response.StatusCode
$response.Content
Mobile version