我一直在尝试让 authy-client 与 Firebase Cloud Functions 一起运行,但我一直遇到 ValidationFailedError。我一直在测试作者在https://www.npmjs.com/package/authy-client提供的示例,但没有成功。
对于我的 Firebase 功能,我一直在尝试这个:
const Client = require('authy-client').Client;
const client = new Client({ key: 'my API key here' });
exports.sendVerificationCode = functions.database.ref('users/{userId}/verify/status')
.onCreate(event => {
const sender = client.registerUser({
countryCode: 'US',
email: 'test@tester.com',
phone: '4035555555'
}).then( response => {
return response.user.id;
}).then( authyId => {
return client.requestSms({ authyId: authyId });
}).then( response => {
console.log(`SMS requested to ${response.cellphone}`);
throw Promise;
});
return Promise.all([sender]);
});
但我得到这个错误:
ValidationFailedError: Validation Failed
at validate (/user_code/node_modules/authy-client/dist/src/validator.js:74:11)
at _bluebird2.default.try (/user_code/node_modules/authy-client/dist/src/client.js:632:31)
at tryCatcher (/user_code/node_modules/authy-client/node_modules/bluebird/js/release/util.js:16:23)
at Function.Promise.attempt.Promise.try (/user_code/node_modules/authy-client/node_modules/bluebird/js/release/method.js:39:29)
at Client.registerUser (/user_code/node_modules/authy-client/dist/src/client.js:617:34)
at exports.sendVerificationCode.functions.database.ref.onCreate.event (/user_code/index.js:24:25)
at Object.<anonymous> (/user_code/node_modules/firebase-functions/lib/cloud-functions.js:59:27)
at next (native)
at /user_code/node_modules/firebase-functions/lib/cloud-functions.js:28:71
at __awaiter (/user_code/node_modules/firebase-functions/lib/cloud-functions.js:24:12)
at cloudFunction (/user_code/node_modules/firebase-functions/lib/cloud-functions.js:53:36)
at /var/tmp/worker/worker.js:695:26
at process._tickDomainCallback (internal/process/next_tick.js:135:7)
我是 Firebase 的云函数的新手,所以我可能忽略了一些明显的东西,但从我读过的内容来看,then() 语句和函数本身需要返回/抛出一个 Promise,所以我一起破解了它。
我还确保 authy-client 包含在 package.json 文件的依赖项中。
我最初注册了 Twilio 试用版,它让我可以选择使用 Authy 创建应用程序。需要确定的是,我还登录了 Authy 以检查 API 密钥是否相同,它们是否相同。所以我不认为验证错误是由于 API 密钥造成的。
任何帮助,将不胜感激。谢谢你。