如何自动登录Google API以获取OAuth 2.0令牌以访问已知用户帐户

key*_*zay 18 google-calendar-api google-api oauth-2.0

好了,这个问题已经被问过这里.在响应/问题的答案,用户告诉他存储refresh_token在应用程序(会话,而不是数据库,但不要紧,你保存它).在浏览了Google上的文档后,似乎access_token有一个到期日期,之后它就不再有效了.现在,我们显然可以在每个固定的时间间隔内自动刷新令牌,或者如果服务返回无效的令牌错误,从而延长令牌的生命周期,但由于某种原因,这个手动过程感觉有点hacky.我的问题是:

  • 这是通过在应用程序中手动登录并保留令牌来访问已知用户帐户的Google日历/应用程序数据的最有效(/普遍接受)方式吗?或者是否有其他机制允许我们以编程方式登录此用户帐户并完成OAuth步骤?

Mat*_*aly 26

在我的应用程序中,流程如下:

  1. 如果access_token未定义,请将用户重定向到Google页面,在该页面中,用户可以访问访问其Google数据的应用程序.这会向您的应用返回授权码.
  2. 使用授权码获取access_tokenrefresh_token.您还应该保存expires_in返回的值,该值告诉您何时access_token到期并且不能再使用.
  3. 每当您需要访问API时,您可以检查数据库是否access_token已过期 - 如果是,请在访问API之前使用它refresh_token来获取新内容access_token.

我没有遇到任何问题这样做 - 就用户而言,他们只需要授予一次访问权限,然后应用程序就会从那里开始进行身份验证.

这应该可以解决您的问题,因为应用程序会以编程方式根据最初授予您应用访问权限的用户重新进行身份验证,而您无需手动执行任何操作.事实上,我不确定还有其他方法可以做到这一点,因为要再次执行OAuth流程,用户必须坐在设备前面手动授予访问权限.这就是坚持的点access_token,并refresh_token在数据库中.

  • 如果您必须进行非自动化的用户交互. (3认同)