通过Google上的操作发送JavaScript中的GET请求

时间:2017-11-29 19:43:59

标签: javascript get actions-on-google

我正在谷歌应用上构建一个动作,我需要识别用户(也就是收到他们的电子邮件)。 我通过以下方式实现了帐户链接:由于您必须拥有端点我正在托管一个“使用谷歌按钮登录”的简单网页,一旦用户使用他的谷歌帐户登录,就会生成一个访问令牌(来自Google的一方面,而不是我),此时我重定向用户,谷歌上的操作获取身份验证令牌。 所以我实现了帐户链接并且它有效,现在我可以获得访问令牌,下一步是什么? 我想我必须向一些谷歌api发送一个GET请求并收回电子邮件,问题是我在javascript中有很多关于GET请求的问题(提示:第一次在这里javascript)。 有人可以帮助我吗?

2 个答案:

答案 0 :(得分:0)

这里有两个潜在问题 - 一个是技术问题。

技术问题 - 您在Firebase上运行吗?

如果您使用的是Firebase功能(这是Google鼓励的,但不需要),默认的“Spark Plan”不允许除Google服务之外的外向函数调用。因此,如果您要进行GET API调用,则需要更新到“Blaze Plan”(列为付费计划,但它确实具有免费使用级别,这对开发和简单部署很有用)

逻辑问题 - 您链接了什么帐户?

你说你实施了帐户关联,你得到一个令牌 - 太棒了!

该令牌表示您授权Google代表您的某个用户访问您的服务。您的用户已授权您让Google执行此操作。您可以使用令牌来确定您的用户中的哪个已授予该权限。

因此,如果您拥有用户的电子邮件地址 - 您可以使用该令牌作为数据库的索引或作为包含其电子邮件地址或其他声明的JWT ...但您必须将该电子邮件地址放在第一个地点。您无法使用它直接获取Google为该用户提供的电子邮件地址。

可以让用户在与您创建帐户时,授权您的服务向 Google的身份服务询问其电子邮件地址 - 但这是一个单独的流程您的服务授权Google智能助理与您通话。

答案 1 :(得分:0)

您正在寻找的GET请求,这是在Node.js

中完成的
    let accestoken = assistant.getUser().accessToken;
    const https = require('https');
    https.get('https://www.googleapis.com/plus/v1/people/me?access_token=' + accestoken, (resp) => {

        let jsondata = '';
        // A chunk of data has been recieved.   
        resp.on('data', (chunk) => {
            jsondata += chunk;
        });

        // The whole response has been received. Print out the result.
        resp.on('end', () => {
            parsedData = JSON.parse(jsondata);
            console.log(parsedData);
            //parsedData.emails[0] is the email address
        });
    })