我正在实施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并在第二步中检查key_name,它们是相同的!但是我仍然没有......我正在遵循cheat sheet方法,如果我使用了错误的方法,请纠正我......
P.S。我实际上是连接到Flickr,如果你有更好的方法来做OAuth2,也可以自由推荐!非常感谢!
答案 0 :(得分:3)
你也需要传递父母
client = Client.get_by_id(key_name, parent=self.user.key)
编辑原因:
由于您在插入中放置了父级,因此get_by_id()只查找顶级,您需要在正确的组中查找它。您也可以通过键获得它:
client = ndb.Key(YourUserModel, userId, Client, key_name).get()