如何避免与GAE Google用户ID发生冲突?

时间:2014-06-18 06:37:51

标签: google-app-engine

Google App Engine提供来自用户服务的用户ID,这些用户ID仅承诺:

  

一个不透明的字符串,用于唯一标识此User对象所代表的用户。

根据:https://developers.google.com/appengine/docs/java/javadoc/com/google/appengine/api/users/User#getUserId()

这些字符串似乎总是数字,长度为21个字符。 Google是否保证他们将永远是数字或任何其他更具体的承诺而不仅仅是一个字符串?

我问,因为我们希望将它们与来自其他登录提供商(如Facebook)的用户ID一起存储,并且如果只有Facebook ID具有前缀并且Google用户ID保持为,则确保不会发生冲突是

2 个答案:

答案 0 :(得分:1)

如果你一直添加" g _" Google ids的前缀和" f _" Facebook ids的前缀,即使您遇到以" f _"开头的Google ID,所有ID也始终是唯一的。

但是,请注意,我们决定采用您正在采取的方法,因为(a)用户可能会更改与我们的应用相关联的帐户(而且我们不想更改其数据存储ID并更新所有引用这种情况,即使它是一种罕见的用例),以及(b)我们允许用户将多个外部帐户连接到我们应用中的帐户。

答案 1 :(得分:0)

如果您希望保证来自多个不同提供者/ API的ID之间不会发生冲突,您应该为这两种类型添加前缀以确保这一点。当一个API说它是一个不透明的字符串时,它明确地不保证字符串的内容可能是什么。仅仅因为它始终是一个数字现在并不意味着它将来会继续成为一个数字。