我已经对自己在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.`);
    }

09-13 03:38