我正在尝试构建IFTTT服务并将其连接到Firebase后端。
我需要按照IFTTT文档中的说明对用户进行身份验证: https://platform.ifttt.com/docs/api_reference#service-authentication
IFTTT的协议支持OAuth2身份验证,包括对 如果需要,刷新令牌。
您的服务API应该使用访问令牌进行身份验证,并作为 身份来源。单个访问令牌应对应于一个 服务上的单个用户帐户或资源所有者。
如果使用刷新令牌,则它们必须是未过期的。如果刷新 令牌未使用,访问令牌必须未过期。
但是我似乎只能从Firebase获得短暂的访问令牌。从Firebase身份验证SDK哪里可以获得或如何生成此类令牌?
根据@FrankvanPuffelen的更新:
我将创建一个在Node服务器(可能只是Cloud Functions)上运行的IFTTT服务,该服务将使用Firebase RTDB将格式化的HTTP请求发送回IFTTT。 IFTTT要求我授权用户帐户。他们所需的UX是这样的:
部分问题是:我可以使用Firebase Auth API获取这些令牌等吗?还是需要使用自己为IFTTT生成的令牌创建新的OAuth 2.0“层”?
PS:我对OAuth还是很陌生,所以这一切令我感到困惑,如果问题不太清楚,请对不起。
答案 0 :(得分:0)
因此,IFTTT调用了Cloud Functions,然后调用了Realtime Database,并且您想使用Realtime Database验证IFTT用户。那是对的吗?如果是这样,您可以使用OAuth2令牌或创建Firebase身份验证会话Cookie。
我不久前这样做是为了从Google Apps脚本访问实时数据库。要求相对简单(一旦您知道它们):
https://www.googleapis.com/auth/userinfo.email
和https://www.googleapis.com/auth/firebase.database
来请求OAuth2令牌。另请参阅:
您还可以使用Firebase身份验证会话cookie,该cookie的寿命比常规Firebase身份验证ID令牌(长达一个小时)更长(最多2周)。您将需要设置一个Cloud Function来创建会话cookie,从IFTTT调用它,然后将会话cookie与IFTTT请求一起传递给实时数据库。
有关此的更多信息,请参见:
答案 1 :(得分:0)
我暂时在这里发布我的解决方案,当我确定它可以实现我所需的一切时,我会接受它。如果有人对在这种情况下如何生成相关令牌/验证码有任何建议,欢迎您!
我正在使用此auth方法:我的API的用户具有未过期的OAuth2访问令牌,并且有一个Express服务器在Firebase HTTPS Cloud Function端点处进行响应。目前,它在原型设计阶段会从UID生成伪造令牌,这些伪造令牌已被IFTTT成功接受。
这是基于此旧的IFTTT api示例的繁重的身份验证流程:https://github.com/IFTTT/connect_with_ifttt_auth_sample
这是要点:
/oauth/authorize
重定向到我的应用。/oauth/authorize_user
/oauth/authorize_user
生成特定于用户的代码,并使用此代码将用户重定向到IFTTT /oauth/token
将代码交换为Bearer令牌。此处的示例代码:https://gist.github.com/nathanvogel/15ed311258b91d7ec3d25f44047780e2