【问题标题】:How does one retrieve the email address of a user with GData?如何使用 GData 检索用户的电子邮件地址?
【发布时间】:2011-01-29 20:42:47
【问题描述】:

我正在尝试使用 GData 检索刚刚使用 Google OAuth 授权我的网站的用户的电子邮件地址、真实姓名和个人资料 URL。

我们知道如何使用 Google 的 OpenID 流程来请求它,但 OpenID 流程有一个严重的限制,即我们必须先询问 Google Apps 用户的域,然后才能知道将其发送到何处以登录。至少使用 OAuth(或甚至 AuthSub),系统都会提示用户登录哪个 Google 帐户。

【问题讨论】:

    标签: openid oauth gdata-api authsub


    【解决方案1】:

    仍然不清楚这是否可行,但我们现在通过使用 OpenID 流程来解决它。添加了他们的通用登录流程后,我们不再有理由避开他们的 OpenID 流程。

    【讨论】:

      【解决方案2】:

      如果您获取用户的联系人供稿,您可以访问提供电子邮件和姓名的 authors 字段。此外,Feed 的 id 字段似乎是联系人所有者的电子邮件地址。

      一个名称已更改的示例(在 Scala 中),假设 AuthSub 的用户(抱歉,我没有将我的代码迁移到 OAuth)您已经有一个会话 token

      scala> val contacts_service = new ContactsService("foo")
      contacts_service: com.google.gdata.client.contacts.ContactsService = com.google.gdata.client.contacts.ContactsService@3fd1acee
      
      scala> contacts_service.setAuthSubToken(token, null)
      
      scala> val feedUrl = new URL("https://www.google.com/m8/feeds/contacts/default/full?max-results=10000")
      feedUrl: java.net.URL = https://www.google.com/m8/feeds/contacts/default/full?max-results=10000
      
      scala> val feed = contacts_service.getFeed(feedUrl, classOf[ContactFeed])
      feed: com.google.gdata.data.contacts.ContactFeed = {ContactFeed com.google.gdata.data.contacts.ContactFeed@271a95f8}
      
      scala> feed.getId
      res13: java.lang.String = user@example.com
      
      scala> val p = feed.getAuthors.head
      p: com.google.gdata.data.Person = com.google.gdata.data.Person@513b4686
      
      scala> p.getEmail
      res14: java.lang.String = user@example.com
      
      scala> p.getName
      res15: java.lang.String = Example User
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-03
        • 2017-05-08
        • 1970-01-01
        • 1970-01-01
        • 2014-03-11
        相关资源
        最近更新 更多