我正在在 android 中设计语音应用 aog )触发A firebase cloud函数。
您可以在下面的图像上看到我的Android应用在过程中实现Google登录,并且Firebase也具有Google用户身份验证。
我想在firebase云功能上阅读我的用户信息(电子邮件,名称等),但我做不到。
我已经使用Google Home而不是Android应用程序做到了。
您知道有什么方法吗?我读了很多教程,但没有人对我有用。
Android实施的最重要部分是Aiconfiguration:
final AIConfiguration config = new AIConfiguration(
CLIENT_ACCESS_TOKEN,
AIConfiguration.SupportedLanguages.English,
AIConfiguration.RecognitionEngine.System);
从api.ai获得client_access_token的位置(如此处)。
另外,API.AI控制台页面使用 webhook ,带有正确触发的firebase云功能。
使用firebaseui实现登录方法。
这种配置中最重要的部分是firebase和Google上的动作:
firebase
您需要为Google填写两个登录选项:
1)白名单客户端ID,如果您在Android项目中使用SHA1指纹,则会自动添加。顺便说一句,我的应用被自动添加。
2) Web SDK配置:从Google Cloud Platform的My Project的Google Cloud Platforms的凭证控制台中填充的字段。
在Google上的操作
在这里我设置了 linking 在此答案中喜欢。
感谢您的帮助。
在某种程度上,是的,问题与帐户链接。
但是,潜在的问题是您正在使用" google"库,但是以的方式调用api.ai并非 在Google上进行操作。因此,没有链接的帐户 - 您拥有来自Android应用程序的帐户,这是Firebase拥有的帐户,但您并没有将其发送给您的满足Webhook。
api.ai本身没有用户身份验证或用户身份的概念。(它确实具有身份验证 - 但这是为了确保Webhook从API.AI获得合法请求。它与用户无关。)它依靠开发人员添加此信息ElseHow。Google Assistant根据您的需求有几种方法,但是如果您不在Google Assistant平台上构建(听起来您不是),并且直接通过API.AI,则需要自己包含此信息。
我对如何使用Apiai-Java-client并不太熟悉,但是看起来您与服务器的每个交易所的一部分看起来都可以包含RequestExtras
对象。作为此对象的一部分,您可以包含一个称为"认证"的上下文,该上下文具有参数,其中一个参数可以包括身份验证信息(例如auth令牌,尽管这可能不是一个很好的安全实践)。/p>
好吧,可以在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。所以我认为您不想这样做。无论哪种方式,如果愿意,请在Well中检查一下。
https://firebase.google.com/docs/functions/auth-events
希望它有帮助