我第一次进入Android开发阶段,当然正在爆炸。但是,我确实有一个关于身份验证的一般方法(用于处理后端)的问题。
首先,在坚果壳中,我已经解决了这个问题。
使用google的文档(link),我使用goi登录api对用户进行身份验证。我已将参考文献中提到的逻辑放在我的应用程序的主要活动中。触发onConnected方法后,我已成功连接GoogleApiClient。
使用现已连接的GoogleApiClient,我使用对GoogleAuthUtil.getToken的调用来获取一个oath2令牌,用于验证对后端的请求。基本上,每当我向后端发出HTTP请求时,我都会将此标记包含在标头中。我的后端读取此令牌并使用Python API提供的验证此令牌。在后端,我使用嵌入在(现在解析的)令牌中的电子邮件来确保发出该oauth2令牌的用户实际上是我系统的用户。
现在,问题就在这里。首先,这听起来像是在Android平台上进行身份验证的合理方法吗?我可能会失踪什么?可能出现什么问题?
第二个问题更为直接。当我从客户端应用程序获取oauth2令牌时,每次向安全资源发出HTTP请求时,我都会存储它并使用相同的令牌。当然,最终令牌将过期。从使用Android模拟器的一些有限测试来看,似乎如果我关闭应用程序并重新启动它,我将使用GoogleAuthUtil.getToken获得相同的,过期的令牌,而不是在将来获得一个新的过期新令牌。在我的测试中,我不得不重新启动模拟器以获得具有正确到期的令牌。我错了吗?我需要做些什么特别的事情来告诉Google API向我发送新令牌吗?我是否需要断开GoogleApiClient并重新连接?我希望避免这样做,以限制需要携带完成此过程所需的回调的活动数量。
非常感谢任何有关智慧的话语!
答案 0 :(得分:0)
获得令牌后,您可以使用Validate Token,如果它回复了错误:' invalid_token',您可以使用GoogleAuth.clearToken(Context context, String token)清除令牌并获取使用您用于获取身份验证令牌的方法的新令牌。