0

对于我正在处理的项目,我需要存储用户访问令牌(以及我假设的身份验证代码和刷新令牌)。我为此使用 GAE,但我很难设计模型,这很简单。我没有使用 NoSQL 的经验,所以 GAE 数据存储很麻烦。

这是项目的全局架构

Android Mobile --- Python Server --- GAE Python Server
   |_______________________________________|

用户将使用他们的谷歌帐户和 OAuth 通过 GAE 服务器通过 android 应用程序注册。然后我想我应该使用通过 GAE 检索的 user_id 创建一个用户对象。

之后我希望用户启用我的应用程序来访问一些云存储服务(Drive、Box、Dropbox,...)。一旦他这样做,我将拥有与此服务和用户相关的三个令牌,我需要以某种方式存储它们。

相对于 GAE 数据存储中的单个用户,存储多个服务的 Oauth 凭证的最佳方式是什么?

根据我的阅读,我可以使用 Expando 类并将服务逐个添加到用户实体,或者做一个单独的实体并使用引用和用户实体中的列表将它们存储,... 最相关的一条信息GAE 凭证存储。但是我怎么能将它用于多种服务,从而获得凭据呢?

我感谢大家的帮助

- - 编辑 - - - - - - - - - - - - - - -

看来我没有很好的关键词来研究这个主题。再过几个小时: GAE - Google Developer - 建模实体关系

class User(db.Model):
  name = db.StringProperty()

class ServiceOAuthAccess(db.Model):
  user = db.ReferenceProperty(User)
  service_name = db.StringProperty(choices=('Dropbox', 'Box', 'Drive'))
  ....

但是,我还有一个问题:

我可以使用存储任何服务的 OAuth 令牌com.google.api.client.auth.oauth2.Credential吗?还是谷歌特有的?

也使用这个,我不会使用AppEngineCredentialStore. 如果我这样做会更好吗?反正我可以用这个吗?

4

1 回答 1

0

看来我没有很好的关键词来研究这个主题。再过几个小时:GAE - Google Developer - 建模实体关系

class User(db.Model):
  name = db.StringProperty()

class ServiceOAuthAccess(db.Model):
  user = db.ReferenceProperty(User)
  service_name = db.StringProperty(choices=('Dropbox', 'Box', 'Drive'))
  ....
于 2013-05-01T14:22:13.410 回答