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

Openid 如何使用GData检索用户的电子邮件地址?,openid,oauth,gdata-api,authsub,Openid,Oauth,Gdata Api,Authsub,我正在尝试使用GData检索刚刚使用googleoauth授权我的站点的用户的电子邮件地址、真实姓名和配置文件URL 我们知道如何使用Google的OpenID流请求它,但是OpenID流有一个严重的限制,即我们必须在知道发送到哪里登录之前请求Google应用程序用户的域。至少在使用OAuth(甚至AuthSub)时,用户会被提示登录他们的Google帐户。仍然不清楚这是否可行,但我们现在使用OpenID流来解决这个问题。随着他们的通用登录流的增加,我们再也没有理由避免他们的OpenID流。如果

我正在尝试使用GData检索刚刚使用googleoauth授权我的站点的用户的电子邮件地址、真实姓名和配置文件URL


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

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

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

一个名称更改的示例(在Scala中),假设用户是AuthSub(对不起,我没有将代码迁移到OAuth),其中您已经有一个会话
令牌

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