0

我正在实施 OAuth2 身份验证过程。

我使用一个名为 Client 的模型。第一步,调用 API 获取请求令牌,创建客户端实体并将令牌和密钥临时存储在客户端实体中。第二步,用户授权应用程序并重定向到回调页面后......我需要获取相同的客户端实体并更新新检索到的访问令牌和密码。

在我的第一步中,我有这个:

key_name = 'service.%s' % (self.user.key.urlsafe(),)
client = Client.get_or_insert(
            key_name,
            parent=self.user.key,
            name='flickr',
            token=request_token['oauth_token'],
        )

在我的第二步中,我试图通过 key_name 获取客户端:

key_name = 'service.%s' % (self.user.key.urlsafe(),)
client = Client.get_by_id(key_name)

不幸的是,我无法在第二步中获得客户端...我尝试在第 1 步中打印出 string_id 并在第 2 步中检查 key_name,它们是相同的!但是我仍然没有...我正在遵循备忘单方法,如果我使用了错误的方法,请纠正我...

PS 我实际上正在连接到 Flickr,如果您有更好的 OAuth2 方法,也请随时提出建议!非常感激!

4

1 回答 1

3

你也需要通过父母

client = Client.get_by_id(key_name, parent=self.user.key)

编辑原因:

由于您将父级插入插入意味着 get_by_id() 仅查找顶层,您需要在正确的组中查找它。您也可以通过以下方式获取它:

client = ndb.Key(YourUserModel, userId, Client, key_name).get()
于 2013-09-10T14:56:33.417 回答