0

对于我正在开发的项目,我需要存储用户访问令牌(以及我认为的认证代码和刷新令牌)。 我正在使用GAE,因此我很难设计模型,这很简单。我对NoSQL没有经验,因此GAE数据存储很麻烦。GAE - 存储多个OAuth访问令牌

下面是该项目

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

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

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

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

从我已阅读的内容中,我可以使用Expando类并通过服务向用户实体添加服务,或者做一个单独的实体并使用用户实体中的参考和列表来存储它们... 最相关信息片GAE Credential Storage。但我怎么能用这个多服务,因此凭据?

谢谢大家的帮助

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

看来我没有很好的关键词来研究这个问题。 后几个小时: 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')) 
    .... 

不过,我仍然留下了quetion:

我可以将使用com.google.api.client.auth.oauth2.Credential任何服务的OAuth令牌? 还是Google专用?我也不会使用AppEngineCredentialStore。如果我这样做会更好吗?无论如何,我可以使用这个?

回答

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')) 
    ....