我正嘗試使用GData檢索剛剛使用Google OAuth授權我的網站的用戶的電子郵件地址,真實姓名和個人資料網址。如何使用GData檢索用戶的電子郵件地址?
我們知道如何使用Google的OpenID流來請求它,但是OpenID流具有嚴重的侷限性,我們必須要求Google Apps用戶的域名,然後才能知道要將它們發送到哪裏登錄。至少使用OAuth(甚至AuthSub),用戶會被提示要求登錄哪個Google帳戶。
我正嘗試使用GData檢索剛剛使用Google OAuth授權我的網站的用戶的電子郵件地址,真實姓名和個人資料網址。如何使用GData檢索用戶的電子郵件地址?
我們知道如何使用Google的OpenID流來請求它,但是OpenID流具有嚴重的侷限性,我們必須要求Google Apps用戶的域名,然後才能知道要將它們發送到哪裏登錄。至少使用OAuth(甚至AuthSub),用戶會被提示要求登錄哪個Google帳戶。
仍然不清楚這是否可行,但我們現在通過使用OpenID流程解決此問題。隨着他們的通用登錄流量的增加,我們不再有理由避免他們的OpenID流量。
如果您獲取用戶的聯繫人摘要,則可以訪問authors
字段,該字段會爲您提供電子郵件和姓名。此外,Feed的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 [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