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

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

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

2 ответа

Решение

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

Если вы получаете фид контактов пользователя, вы можете получить доступ к 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
Другие вопросы по тегам