2010-03-20 4 views
4

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

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

ответ

1

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

1

Если вы получаете фид контактов пользователя, вы можете получить доступ к полю authors, которое дает вам адрес электронной почты и имя. Кроме того, поле id канала является адресом электронной почты человека, которому принадлежат контакты.

Пример (в Scala) с именами изменились, предполагая, что пользователь AuthSub (извините, я не мигрировали мой код для OAuth), где у вас уже есть сеанс token:

scala> val contacts_service = new ContactsService("foo") 
contacts_service: com.google.gdata.client.contacts.ContactsService = [email protected] 

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

scala> feed.getId 
res13: java.lang.String = [email protected] 

scala> val p = feed.getAuthors.head 
p: com.google.gdata.data.Person = [email protected] 

scala> p.getEmail 
res14: java.lang.String = [email protected] 

scala> p.getName 
res15: java.lang.String = Example User 
Смежные вопросы