我已经对自己在Google项目上的操作进行了Google登录,并且想要将帐户信息保存到Firestore数据库中。
我查看了Google如何执行此操作的示例(示例here,位于标题下的“处理数据访问请求”下的最底部),但是当您实际尝试将其部署到Firebase时,您意识到它实际上具有无效的语法(或至少这就是dialogflow内联编辑器所说的....)
当我尝试部署此代码时,该错误具体说明了以下内容:
The deployment of your Cloud Function failed:
Function load error: Code in file index.js can't be loaded.
Is there a syntax error in your code?
Detailed stack trace: /user_code/index.js:34
app.intent('Get Sign In', async (conv, params, signin) => {
^
SyntaxError: Unexpected token (
有什么建议么?
谢谢您的帮助!
请注意:我仅使用本教程对PLUS所说的代码
我在Google图书馆和履行线上添加了操作(即:
// Other libraries...
const {
dialogflow,
BasicCard,
Permission,
Suggestions,
Carousel,
SignIn
} = require('actions-on-google');
// ** code from tutorial / link **
exports.dialogflowFirebaseFulfillment = functions.https.onRequest(app)
最佳答案
我想出了如何做到这一点,但这是不同于google示例操作的方法。如果有人知道如何更轻松地完成此操作,或者知道我发布的链接中的代码出了什么问题(如果有的话..),请告诉我/添加答案!
我决定直接直接写到firestore并将其置于“获取登录”功能下(在dialogflow的教程中也提到了)。
这是我用来让用户登录并将信息登录到Firestore的功能:
app.intent('Get Signin', (conv, params, signin) => {
if (signin.status === 'OK') {
const payload = conv.user.profile.payload;
conv.ask(`Welcome back ${payload.name}. What can I help you with??`);
const databaseEntry = conv.user.profile.payload; // Account info, loaded to firestore
const accountRef = db.collection('Accounts').doc('account_info'); //How you want the info in firestore to appear
return db.runTransaction(t => {
t.set(accountRef, {entry: databaseEntry});
return Promise.resolve('Write complete');
}).then(doc => {
}).catch(err => {
console.log(`Error writing to Firestore: ${err}`);
});
} else {
conv.close(`To continue, you need to make an account with the app.`);
}