帐户与Google上的操作相关联,哪个字段会保留在数据库中?

时间:2017-08-11 10:38:37

标签: google-oauth2 actions-on-google

我使用模拟器测试了帐户关联。我可以保留 app.config(function($stateProvider, $urlRouterProvider) { $stateProvider.state('root', { url: "/", controller: { function() { $state.go('shop') } } }).state('shop', { url: "/shop", controller: 'myCtrl', templateUrl: "/shopcontent.jsp" }) }); 中的哪个字段? originalRequest -> data -> useruserId

我发现它们总是在会话到期时重新生成(或者通过切换“测试状态:活动”),这使得accessToken成为不可能。

我知道我可以使用SELECT * FROM User WHERE assistant_client_id = [something]accessToken查询“真实”(?)ID,但是为每个请求执行此操作会增加额外的时间(而且助理并不完全耐心)。< / p>

假设https://www.googleapis.com/userinfo/v2/me永远不会被其他人重复使用,我可以这样做吗?

  1. accessToken存储在我的accessToken表格中。
  2. 对于后续请求,请使用User
  3. 进行检查
  4. 如果不匹配,请查询accessToken以获取可用于查询我的表格的ID(或电子邮件),并使用最新版本更新https://www.googleapis.com/userinfo/v2/me

1 个答案:

答案 0 :(得分:2)

在某些情况下,userId字段和模拟器目前存在使用sessionId的错误,但在大多数情况下,在实际设备上调用之间应该保持这种错误。

但是,如果您使用的是帐户关联,这是更好的方法。不过请注意,accessToken 不是是一个标识符。正如您所注意到的,它是标识符的临时键。 (有时候它是一个包含标识符的令牌,但不包括你的情况。)访问令牌假设具有有限的生命周期 - 通常是一小时。在其他情况下,即使在超时期限内,您也可以获得新的accessToken

虽然您可以放心,如果您看到相同的accessToken两次与同一个用户通话,则您无法假设同一个用户总是会给您相同的accessToken

您的方法很好,但您还需要处理旧访问令牌的清理工作。可能会创建一个超时字段,并假设您可以在一小时后的某个时间将它们计时,或者从您的用户创建第二个哈希到最新的accessToken并在用另一个替换时删除accessToken之一。