【发布时间】:2013-04-21 13:46:48
【问题描述】:
对于我正在处理的项目,我需要存储用户访问令牌(以及我假设的身份验证代码和刷新令牌)。 我为此使用 GAE,但我很难设计模型,这很简单。我没有使用 NoSQL 的经验,所以 GAE 数据存储很麻烦。
这是项目的全局架构
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'))
....
但是,我还有一个问题:
我可以使用com.google.api.client.auth.oauth2.Credential 存储任何服务的 OAuth 令牌吗?
还是 Google 特有的?
同样使用这个,我不会使用AppEngineCredentialStore。如果我这样做会更好吗?反正我可以用这个吗?
【问题讨论】:
标签: python google-app-engine database-design oauth google-cloud-datastore