我正在Android中设计一个语音应用程序,它使用API.AI集成了Actions on Google (AoG),触发了Firebase云函数。
您可以在跟随图像上看到,我的安卓应用程序在过程中实现了谷歌签名,而且Firebase也有谷歌用户身份验证。
我想阅读我的用户信息(电子邮件,姓名等)在Firebase函数上,但我做不到。
我已经用Google而不是Android应用做了。
你知道做这个的方法吗?我读过很多教程,但没有人对我有用。
安卓系统实现中最重要的部分是AIConfiguration:
final AIConfiguration config = new AIConfiguration(
CLIENT_ACCESS_TOKEN,
AIConfiguration.SupportedLanguages.English,
AIConfiguration.RecognitionEngine.System);其中CLIENT_ACCESS_TOKEN是从API.AI (就像这里)中获得的。
此外,API.AI控制台页面与正确触发的Firebase函数一起使用Webhook。
登录方法是使用FirebaseUI实现的。
此配置中最重要的部分是Firebase和Google上的操作:
Firebase
您需要为Google填写两个登录选项:
1)如果在安卓项目中使用SHA1指纹,就会自动添加白名单客户ID。顺便说一下,我的应用程序是自动添加的。
2) Google配置:字段中填充了来自Google平台的项目凭据控制台的自动生成的OAuth 2.0客户端ID。
谷歌的行动
在这里,我设置了帐户链接,就像在这个答案中。
谢谢你的帮助。
发布于 2017-09-18 18:27:51
在某种程度上,是的,问题是与帐户的联系。
然而,潜在的问题是,您使用的是Google上的操作库,但是使用API.AI的方式并不是在Google上进行操作。所以没有账户可以链接-你有你从你的Android应用程序的帐户,它是相同的帐户,Firebase有,但你没有发送到你的实践网络钩子。
API.AI本身没有用户身份验证或用户身份的概念。(它确实有身份验证--但这是为了确保web钩子从API.AI获得合法请求。它与用户无关。)它依赖于开发人员以其他方式添加此信息。根据您的需要,Google助手有几种解决方法,但是如果您没有构建Google平台(听起来不像),并且直接通过API.AI,那么您需要自己包含这些信息。
我不太熟悉如何使用apiai client,但看起来您与服务器之间的每个交换的一部分都可以包括一个RequestExtras对象。作为这个对象的一部分,您可以包含一个名为(例如)“身份验证”的具有参数的上下文,其中一个参数可以包含身份验证信息(例如auth令牌,尽管这可能不是一个很好的安全实践)。
发布于 2017-09-18 17:37:01
好的,firebase功能可以在Firebase活动中触发,比如写数据库、存储等等。但是,正如您的图片所示,中间有一个api.ai,您希望在使用API.AI之后触发云功能。因此,您可以使用HTTP触发器并发送请求。查看官方文件,并根据你的需要进行计算。
https://firebase.google.com/docs/functions/http-events
下面是这样做的一个github示例:https://github.com/firebase/functions-samples/tree/master/quickstarts/time-server
除此之外,您还可以使用Auth触发器,但中间有API.AI。所以我想你不想这么做。不管怎么说,如果你愿意的话,好好看看这个。
https://firebase.google.com/docs/functions/auth-events
希望它能帮上忙
https://stackoverflow.com/questions/46284275
复制相似问题