Сейчас я пытаюсь использовать хранилище данных, но каждый раз, когда я пытаюсь обновить хранилище, я получаю сообщение об ошибке, связанное с невозможностью найти идентификатор клиента из метаданных навыка.
Я использую ClientID и секрет клиента из раздела «Разрешения» навыка в консоли разработчика Alexa, используя это и область alexa::datastore, я могу авторизоваться и получить access_token.
Однако, когда я пытаюсь вызвать REST API хранилища данных для обновления хранилища данных, происходит сбой со следующей ошибкой:
Код: Выделить всё
{
"type": "INVALID_ACCESS_TOKEN",
"message": "Unable to find the Client ID from skill metadata:amzn1.application-oa2-client.xxxxxxxxx"
}
Я потратил пару дней, пытаясь заставить это работать, но безрезультатно.
Я уверен, что мой ClientID и Client Secret верны, поскольку авторизация работает, поэтому кажется, что это какой-то другой проблема с конфигурацией, проблема с платформой, или, может быть, я пропустил необходимый шаг?
Я также написал быстрый скрипт Powershell для тестирования API, который вы можете увидеть ниже:
Код: Выделить всё
$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
Подробнее здесь: https://stackoverflow.com/questions/798 ... exa-widget
Мобильная версия