对于我正在处理的项目,我需要存储用户访问令牌(以及我假设的身份验证代码和刷新令牌)。 我正在使用GAE,我很难设计模型,这非常简单。我没有使用NoSQL的经验,因此GAE数据存储令人不安。
这是项目的全球架构
Android Mobile --- Python Server --- GAE Python Server
|_______________________________________|
用户将使用他们的Google帐户和OAuth通过GAE服务器注册Android应用程序。然后我想我应该创建一个用户对象,通过GAE检索user_id。
之后我希望用户启用我的应用程序以访问某些云存储服务(Drive,Box,Dropbox,...)。 一旦他这样做,我将有三个令牌相对于这个服务和用户,我需要以某种方式存储它们。
相对于GAE数据存储区中的单个用户,存储多个服务的Oauth凭据的最佳方法是什么?
根据我的阅读,我可以使用Expando类并通过服务向用户实体添加服务,或者使用引用和用户实体中的列表来执行单独的实体并存储它们,... 最相关的信息GAE Credential Storage。但是我如何将它用于多种服务,从而获得凭证?
我感谢大家的帮助
---- EDIT ------------------------------
似乎我没有关于该主题研究的好关键词。 再过几个小时: GAE - Google Developer - Modeling Entity Relationships
class User(db.Model):
name = db.StringProperty()
class ServiceOAuthAccess(db.Model):
user = db.ReferenceProperty(User)
service_name = db.StringProperty(choices=('Dropbox', 'Box', 'Drive'))
....
但是,我还有一个问题:
我可以使用com.google.api.client.auth.oauth2.Credential
存储任何服务的OAuth令牌吗?
或者是Google特定的吗?
同样使用此功能,我不会使用AppEngineCredentialStore
。如果我这样做会更好吗?无论如何我可以使用它吗?
答案 0 :(得分:0)
似乎我没有关于该主题研究的好关键词。再过几个小时:GAE - Google Developer - Modeling Entity Relationships
class User(db.Model):
name = db.StringProperty()
class ServiceOAuthAccess(db.Model):
user = db.ReferenceProperty(User)
service_name = db.StringProperty(choices=('Dropbox', 'Box', 'Drive'))
....