代码之家  ›  专栏  ›  技术社区  ›  sblom

如何使用gdata检索用户的电子邮件地址?

  •  4
  • sblom  · 技术社区  · 16 年前

    我尝试使用gdata来检索刚刚使用google oauth授权我的网站的用户的电子邮件地址、真实姓名和配置文件URL。

    我们知道如何使用Google的OpenID流来请求它,但是OpenID流有一个严重的限制,在我们知道将它们发送到哪里登录之前,我们必须先请求一个Google应用程序用户的域。至少在使用OAuth(甚至AuthSub)时,用户会得到提示,要求登录他们的Google帐户。

    2 回复  |  直到 15 年前
        1
  •  1
  •   sblom    15 年前

    仍然不清楚这是可能的,但是我们现在通过使用OpenID流来解决这个问题。随着他们的通用登录流的增加,我们不再有理由避免他们的OpenID流。

        2
  •  1
  •   Richard Dallaway    15 年前

    如果获取用户的联系人源,则可以访问 authors 提供电子邮件和名称的字段。另外,饲料 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