После того, как я попытался подключить свою учетную запись пользователя, которая хранится в базе данных MongoDB с Alexa, это функция привязки учетной записи, на странице подтверждения говорится, что " Мы не смогли связать * в это время ".
Сервер OAuth2, который я запускаю, составлен из этого руководства: Создание RESTful API с узлом - OAuth2 Server
Весь поток аутентификации работает правильно, и даже токен доступа (называемый значением) хранится в моей базе данных.
Я думаю, что это самый важный блок кода, так как здесь все работает, я думаю.
server.exchange
server.exchange(oauth2orize.exchange.code(function(client, code, redirectUri, callback) {
Code.findOne({ value: code }, function (err, authCode) {
if (err) { return callback(err); }
if (authCode === undefined) { return callback(null, false); }
if (client._id.toString() !== authCode.clientId) { return callback(null, false); }
if (redirectUri !== authCode.redirectUri) { return callback(null, false); }
// Delete auth code now that it has been used
authCode.remove(function (err) {
if(err) { return callback(err); }
// Create a new access token
var token = new Token({
value: uid(256),
clientId: authCode.clientId,
userId: authCode.userId
});
// Save the access token and check for errors
token.save(function (err) {
if (err) { return callback(err); }
callback(null, token);
});
});
});
}));
Это мои журналы доступа nginx:
77.182.19.18 - dmnktoe [10/Mar/2019:15:12:27 +0100] "GET /api/oauth2/authorize?redirect_uri=https://layla.amazon.com/api/skill/link/*&client_id=amazonEchoServices&response_type=code&state=*very-long-state-value* HTTP/1.1" 200 525
77.182.19.18 - dmnktoe [10/Mar/2019:15:12:29 +0100] "POST /api/oauth2/authorize HTTP/1.1" 302 1520 "https://oauth2.healform.de/api/oauth2/authorize?redirect_uri=https://layla.amazon.com/api/skill/link/*&client_id=amazonEchoServices&response_type=code&state=*very-long-state-value*"
54.240.197.10 - amazonEchoServices [10/Mar/2019:15:12:29 +0100] "POST /api/oauth2/token HTTP/1.1" 200 434 "-" "Apache-HttpClient/4.5.x (Java/1.8.0_192)"
Надеюсь, что кто-нибудь может помочь.
Обновление : Немного забавно, но все, что нужно Amazon / Alexa, это просто значение внутри моего объекта токена. Так что обратный вызов (нуль, токен); стал обратным вызовом (null, token.value);.