Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.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
Google App Engine Java-联合登录,数据存储中要保存什么_Java_Google App Engine_Federated Identity - Fatal编程技术网

Google App Engine Java-联合登录,数据存储中要保存什么

Google App Engine Java-联合登录,数据存储中要保存什么,java,google-app-engine,federated-identity,Java,Google App Engine,Federated Identity,我正在使用联合登录为Java应用构建一个Google应用引擎 当用户使用OAuth提供程序登录到我的应用程序时,我将返回一个用户对象[http://code.google.com/appengine/docs/java/javadoc/com/google/appengine/api/users/User.html] 我想在数据存储中保留指向该用户的链接。但是,我使用什么作为唯一密钥?是getFederatedIdentity()还是getUserId()?这两个平台上几乎都没有JavaDoc。

我正在使用联合登录为Java应用构建一个Google应用引擎

当用户使用OAuth提供程序登录到我的应用程序时,我将返回一个用户对象[http://code.google.com/appengine/docs/java/javadoc/com/google/appengine/api/users/User.html]

我想在数据存储中保留指向该用户的链接。但是,我使用什么作为唯一密钥?是getFederatedIdentity()还是getUserId()?这两个平台上几乎都没有JavaDoc。显然,当用户随后登录到我的应用程序时,我希望检索已保存到数据存储的对象

我理解federatedIdentity字段,我理解应该始终填充该字段(我只允许联合登录)。然而,如果这是用于将我的详细信息链接到登录用户的字段,那么Google在本地服务器上测试时会将此字段留空。。。所以那没有多大用处

什么是getUserId字段-Google如何设置它?如果用户的联合身份保持不变,它会保证保持不变吗

非常感谢

当用户登录到应用程序时,该应用程序可以访问用户向该应用程序发出的每个请求的帐户电子邮件地址或OpenID标识符。应用程序还可以访问唯一标识用户的用户ID,即使用户更改了其帐户的电子邮件地址


听起来像是
getUserId()
是最好的选择。

您也不需要存储,您可以将用户对象直接存储在数据存储中。有关支持的对象类型的列表,请参阅。

好的,我会尝试一下-我只是想知道用户id字段是如何设置的。。。但是,如果谷歌承诺它将是唯一的,如果联邦登录是相同的,它将保持不变,我很高兴。谢谢。听起来它是由用户APIok设置的(在对象中),我可以这样做,但我想针对它存储其他属性(那么我最终会扩展它吗?),当用户随后登录时,我仍然需要检索它,所以我仍然需要通过一个键检索用户对象。。。除非UserService.getUser返回数据存储中的版本,但如果用户更改了其电子邮件地址,则返回的版本可能不正确。我确实看到了一些关于使用电子邮件地址作为将联合登录链接到存储在我自己的应用程序中的数据的唯一键的内容。。。但这意味着我需要请求用户电子邮件的权限address@planetjones所有这些都很好-我想说的是,您可以将其作为属性存储在模型上,而不仅仅是存储用户ID。如果您需要一个唯一的、不变的密钥作为密钥名称,请使用用户ID。