4

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

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

4

2 回答 2

1

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

于 2010-07-23T16:42:55.327 回答
1

如果您获取用户的联系人提要,您可以访问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
于 2011-03-05T17:23:44.240 回答