如何使用GData检索用户的电子邮件地址?
问题描述:
我正尝试使用GData检索刚刚使用Google OAuth授权我的网站的用户的电子邮件地址,真实姓名和个人资料网址。如何使用GData检索用户的电子邮件地址?
我们知道如何使用Google的OpenID流来请求它,但是OpenID流具有严重的局限性,我们必须要求Google Apps用户的域名,然后才能知道要将它们发送到哪里登录。至少使用OAuth(甚至AuthSub),用户会被提示要求登录哪个Google帐户。
答
仍然不清楚这是否可行,但我们现在通过使用OpenID流程解决此问题。随着他们的通用登录流量的增加,我们不再有理由避免他们的OpenID流量。
答
如果您获取用户的联系人摘要,则可以访问authors
字段,该字段会为您提供电子邮件和姓名。此外,Feed的id
字段似乎是拥有联系人的人的电子邮件地址。
一个例子(Scala中)与名称改变,假设的AuthSub的用户(对不起,我没有迁移我的代码到OAuth),您已经有了一个会话token
:
scala> val contacts_service = new ContactsService("foo")
contacts_service: com.google.gdata.client.contacts.ContactsService = [email protected]
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 [email protected]}
scala> feed.getId
res13: java.lang.String = [email protected]
scala> val p = feed.getAuthors.head
p: com.google.gdata.data.Person = [email protected]
scala> p.getEmail
res14: java.lang.String = [email protected]
scala> p.getName
res15: java.lang.String = Example User