2013-10-19 30 views
3

我有一個使用GAE用戶服務和fedarated登錄的應用程序。GAE用戶服務返回用戶暱稱屬性的xml

最近對於一個用戶,我在暱稱屬性中獲得了一個xml提要。

對於所有其他領域數據是確定

在細節:

我的寄存器處理

class RegisterPersonHandler(UserPageHandler): 

    def get(self): 
     user = users.get_current_user() 
     if not user: 
      self.redirect(users.create_login_url(self.request.uri), abort=True) 
      return 
     person = Person.get_or_insert(user.user_id()) 
     if not self._register(person, user): 
      logging.warning('Warning registration failed') 
      return 
     self.redirect("/") 

    def post(self): 
     self.view("No reason to be here Mr Jiggles ;-)") 
     return 

    @ndb.transactional() 
    def _register(self, person, user): 
     ''' Registration process happens here 
     ''' 
     # check if the person has info and if not create it 
     info = PersonInfo.query(ancestor=person.key).get() 
     if not info: 
      info = PersonInfo(id=user.user_id(), parent=person.key) 
      info.nick_name = user.nickname() 
      info.email = user.email() 
      info.put() 
     return True 

暱稱場,我得到以下字符串

https://www.google.com/accounts/o8/id?id=[id_of_the_user] 

打開我的瀏覽器,網址讓我下載一個XML具有以下內容:

<?xml version="1.0" encoding="UTF-8"?> 
<xrds:XRDS xmlns:xrds="xri://$xrds" xmlns="xri://$xrd*($v*2.0)"> 
<XRD> 
<Service priority="0"> 
<Type>http://specs.openid.net/auth/2.0/signon</Type> 
<Type>http://openid.net/srv/ax/1.0</Type> 
<Type>http://specs.openid.net/extensions/ui/1.0/mode/popup</Type> 
<Type>http://specs.openid.net/extensions/ui/1.0/icon</Type> 
<Type>http://specs.openid.net/extensions/pape/1.0</Type> 
<URI>https://www.google.com/accounts/o8/ud</URI> 
</Service> 
<Service priority="10"> 
<Type>http://specs.openid.net/auth/2.0/signon</Type> 
<Type>http://openid.net/srv/ax/1.0</Type> 
<Type>http://specs.openid.net/extensions/ui/1.0/mode/popup</Type> 
<Type>http://specs.openid.net/extensions/ui/1.0/icon</Type> 
<Type>http://specs.openid.net/extensions/pape/1.0</Type> 
<URI>https://www.google.com/accounts/o8/ud?source=mail</URI> 
</Service> 
<Service priority="10"> 
<Type>http://specs.openid.net/auth/2.0/signon</Type> 
<Type>http://openid.net/srv/ax/1.0</Type> 
<Type>http://specs.openid.net/extensions/ui/1.0/mode/popup</Type> 
<Type>http://specs.openid.net/extensions/ui/1.0/icon</Type> 
<Type>http://specs.openid.net/extensions/pape/1.0</Type> 
<URI>https://www.google.com/accounts/o8/ud?source=gmail.com</URI> 
</Service> 
<Service priority="10"> 
<Type>http://specs.openid.net/auth/2.0/signon</Type> 
<Type>http://openid.net/srv/ax/1.0</Type> 
<Type>http://specs.openid.net/extensions/ui/1.0/mode/popup</Type> 
<Type>http://specs.openid.net/extensions/ui/1.0/icon</Type> 
<Type>http://specs.openid.net/extensions/pape/1.0</Type> 
<URI>https://www.google.com/accounts/o8/ud?source=googlemail.com</URI> 
</Service> 
<Service priority="10"> 
<Type>http://specs.openid.net/auth/2.0/signon</Type> 
<Type>http://openid.net/srv/ax/1.0</Type> 
<Type>http://specs.openid.net/extensions/ui/1.0/mode/popup</Type> 
<Type>http://specs.openid.net/extensions/ui/1.0/icon</Type> 
<Type>http://specs.openid.net/extensions/pape/1.0</Type> 
<URI>https://www.google.com/accounts/o8/ud?source=profiles</URI> 
</Service> 
</XRD> 
</xrds:XRDS> 

我缺少什麼?

編輯

因爲這是毫無進展,我想至少知道:

我能相信這個綽號屬性格式返回一個字符串,該用戶的暱稱可用? 我已經想通了,這個屬性規定的危險,如果你想將其暴露在公衆的數據,由於大多數情況下beeing的「用戶名」或電子郵件地址...

BTW

Docs

nickname()返回用戶的「暱稱」,一個可顯示的名稱。對於 Google帳戶用戶,如果該地址與 應用程序位於同一個域中,則暱稱爲用戶的電子郵件地址的 的「名稱」部分,否則爲用戶的完整電子郵件地址。對於OpenID 用戶,暱稱是OpenID標識符。

,有點later

電子郵件()返回用戶的電子郵件地址。如果您使用OpenID,則您不應該依賴此電子郵件地址來正確使用 。應用程序 應使用暱稱顯示名稱。

回答

0

docs:「對於OpenID用戶,暱稱是OpenID標識符。」你應該使用電子郵件。

+0

嗯,但我也看到該電子郵件() 返回用戶的電子郵件地址。如果你使用OpenID,你不應該依賴這個電子郵件地址是正確的。應用程序應該使用可顯示名稱的暱稱。 –