Как получить адрес электронной почты пользователя с помощью GData? - PullRequest
4 голосов
/ 20 марта 2010

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

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

Ответы [ 2 ]

1 голос
/ 05 марта 2011

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

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

...