如何使用与Auth0的帐户链接获取Node上的action-on-google的身份验证提供程序?

时间:2018-05-30 21:28:05

标签: actions-on-google dialogflow

我在Node v8.11.2下运行的Javascript App使用了Actions-On-Google库。我正在使用V2 API。我有帐户链接设置与Auth0和我使用SignIn帮助程序意图。 Auth0设置为使用Google,Facebook和Twitter。

我使用的范围是OPENID,OFFLINE_ACCESS,PROFILE和EMAIL。

一切正常,当用户通过身份验证后,我会返回一个访问令牌。

我的问题是,如何获取用户选择的身份验证提供程序,以便我可以正确使用访问令牌来检索配置文件元素,如显示名称,电子邮件地址等?

传递给Sign In Confirmation意图处理程序的 signin 对象只包含以下内容,无论选择何种提供程序: -

{"@type":"type.googleapis.com/google.actions.v2.SignInValue","status":"OK"}

任何帮助都非常感激,因为我有截止日期,这让我有点疯狂了!

谢谢,

肖恩

1 个答案:

答案 0 :(得分:0)

如果您的问题是如何在您的accessToken可用时获取所需信息,那么您可以使用this answer中显示的内容。

在节点中看起来像这样:

let link = "https://www.googleapis.com/oauth2/v1/userinfo?access_token="+accessToken;
    return new Promise(resolve => {
        request(link,(error, response, body) => {
            if (!error && response.statusCode === 200) {
                let data = JSON.parse(body);
                let name = data.given_name ? data.given_name : '';
                conv.ask(new SimpleResponse({
                    speech: "Hello "+ name + "!",
                    text: "Hello "+ name + "!"
                }));
                resolve();
            } else {
                console.log("Error in request promise: "+error);
                resolve();
            }
        })
    })

您需要的一切都应该在数据对象中。

希望它有所帮助。