Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用联合登录时保存用户设置_Python_Google App Engine_Openid - Fatal编程技术网

Python 使用联合登录时保存用户设置

Python 使用联合登录时保存用户设置,python,google-app-engine,openid,Python,Google App Engine,Openid,我需要在我的应用程序上保存每个用户的设置 我尝试将该用户用作设置对象的父对象,但无法执行此操作,因为用户没有密钥。 然后,我在我的设置对象中创建了一个实例,该实例引用了用户属性,但在文档中,如果用户更改其电子邮件地址,则表示UserProperty不稳定。 然后,我决定将user_id保存在StringProperty中,但如果用户使用OpenId登录,则user_id元素为None 有没有办法将用户设置绑定到同时适用于google帐户和open_id帐户的用户对象?能否在google帐户/op

我需要在我的应用程序上保存每个用户的设置

我尝试将该用户用作设置对象的父对象,但无法执行此操作,因为用户没有密钥。 然后,我在我的设置对象中创建了一个实例,该实例引用了用户属性,但在文档中,如果用户更改其电子邮件地址,则表示UserProperty不稳定。 然后,我决定将user_id保存在StringProperty中,但如果用户使用OpenId登录,则user_id元素为None


有没有办法将用户设置绑定到同时适用于google帐户和open_id帐户的用户对象?

能否在google帐户/open_id帐户周围添加一个包装类,以便使用父关系?如下所示:

UserWrapper(db.Model):
  user = db.UserProperty()

UserSettings(db.Model):
  ...

# New User
user = users.get_current_user()
new_user_settings = UserSettings(...)
new_user_wrapper = UserWrapper(key=user.nickname(), 
                               parent=new_user_settings, 
                               user=user)

# Login Existing User
user = users.get_current_user()
user_wrapper = UserWrapper.get_by_key_name(user.nickname())
user_settings = user_wrapper.parent()
如果用户希望更改其电子邮件地址,请使用旧电子邮件查找UserSettings,删除关联的UserWrapper,为新电子邮件地址创建新UserWrapper并与旧UserSettings关联


注意,我已将UserSettings设置为UserWrapper的父级,以防将多个电子邮件地址与同一帐户关联可能会引起兴趣。

您不能在google帐户/open\u id帐户周围添加一个wrapper类,以便使用父级关系吗?如下所示:

UserWrapper(db.Model):
  user = db.UserProperty()

UserSettings(db.Model):
  ...

# New User
user = users.get_current_user()
new_user_settings = UserSettings(...)
new_user_wrapper = UserWrapper(key=user.nickname(), 
                               parent=new_user_settings, 
                               user=user)

# Login Existing User
user = users.get_current_user()
user_wrapper = UserWrapper.get_by_key_name(user.nickname())
user_settings = user_wrapper.parent()
如果用户希望更改其电子邮件地址,请使用旧电子邮件查找UserSettings,删除关联的UserWrapper,为新电子邮件地址创建新UserWrapper并与旧UserSettings关联

注意,我已将UserSettings设置为UserWrapper的父级,以防将多个电子邮件地址与同一帐户关联可能会引起兴趣