Как получить адрес электронной почты пользователя с помощью GData?

Я пытаюсь использовать GData для получения адреса электронной почты, настоящего имени и URL-адреса профиля пользователя, который только что авторизовал мой сайт с помощью Google OAuth.

Мы знаем, как запросить его с помощью потока OpenID Google, но поток OpenID имеет серьезное ограничение: мы должны запрашивать домен пользователя Google Apps, прежде чем мы узнаем, куда его отправить для входа. По крайней мере, с помощью OAuth (или даже AuthSub) , пользователю будет предложено указать, в какую из своих учетных записей Google следует войти.


person sblom    schedule 20.03.2010    source источник


Ответы (2)


Пока не ясно, возможно ли это, но теперь мы работаем над этим, используя поток OpenID. С добавлением их универсального потока входа в систему у нас больше нет причин избегать их потока OpenID.

person sblom    schedule 23.07.2010

Если вы загрузите ленту контактов пользователя, вы получите доступ к полю 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 = [email protected]

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 = [email protected]

scala> p.getName
res15: java.lang.String = Example User
person Richard Dallaway    schedule 05.03.2011