如何将用户帐户信息保存到Firebase?

时间:2018-11-28 04:56:37

标签: javascript node.js firebase dialogflow actions-on-google

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

1 个答案:

答案 0 :(得分:1)

我想出了如何做到这一点,但是它与Google示例中的操作是不同的方法。 如果有人知道如何更轻松地完成此操作,或者知道我发布的链接中的代码出了什么问题(如有)。请让我知道/添加答案!

我决定直接直接写入firestore并将其置于“获取登录”功能下(对话框流程的教程中也提到过)。

这是我用来让用户登录并将信息登录到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.`);
    }