2013-09-25 234 views
2

我們正在嘗試爲Glass用戶提供請求從時間線卡發送給他們的電子郵件的功能。在通知回調Servlet中,我們嘗試以下檢索用戶的電子郵件地址:檢索登錄的Google Glass用戶的電子郵件地址?

String userId = notification.getUserToken(); 
    Credential credential = AuthUtil.getCredential(userId); 
    Mirror mirrorClient = MirrorClient.getMirror(credential); 
    Contact contact = MirrorClient.getContact(credential, userId); 

檢索掀起了認證的用戶的用戶信息對象的電子郵件時,我們沒有得到一個結果返回。我們的應用程序都有可用的應用程序服務器的以下範圍:

"https://www.googleapis.com/auth/glass.timeline " 
"https://www.googleapis.com/auth/glass.location " 
"https://www.googleapis.com/auth/userinfo.profile " 
"https://www.googleapis.com/auth/userinfo.email " 
"https://www.googleapis.com/auth/contacts" 

我們現在可以檢索驗證用戶的電子郵件地址,在那裏我缺少一個許可或者是有其他的手段來要求的數據?

+0

你能澄清你使用的是什麼語言,到底哪個庫您正在使用? – Prisoner

+0

您還可以確認您從哪裏獲取Credential對象,並且這是經過身份驗證的用戶的憑證對象? – Prisoner

+0

我們使用了利用google-api-services-mirror Maven依賴項的Java starter項目。我們正在使用來自其OAuth2客戶端Java庫的Google Credential。到目前爲止,我們還沒有任何身份驗證問題,並且能夠創建完整的時間表並獲取用戶位置。 –

回答

1

您正在進行的getContact調用與用戶的電子郵件地址沒有任何關係。你可以什麼聯繫指的是在這裏讀了起來:
https://developers.google.com/glass/contacts

要獲得用戶的電子郵件地址,我已經成功地使用用來授權與你提到的添加範圍的玻璃鏡面API的應用程序相同的身份驗證令牌調用這個URL:
https://www.googleapis.com/userinfo/email?alt=json

這種方法似乎停止在某一時刻初始授權後的工作,所以一定要做到這一點,當用戶第一次授權的應用程序,並保存過的電子郵件。

雖然我也只是前爲好,這是比較容易,如果你碰巧在AppEngine上運行得到的電子郵件關閉AppEngine上的UserService:
https://developers.google.com/appengine/docs/java/javadoc/com/google/appengine/api/users/UserService

+0

Whe!這完全奏效。我們現在利用Mirror API返回經過驗證的Credential,然後我們使用該對象中的accessToken對您提供的URL進行GET調用,並且它完美地工作。非常感謝您對@ lance-nanek的幫助! –

0

所以這個問題歸結爲「爲什麼我沒有收到我發送給Google鏡像服務的這個用戶ID的聯繫信息?」

鏡像服務僅提供Glassware添加的聯繫人的聯繫信息。請參閱https://developers.google.com/glass/contacts瞭解更多關於玻璃中的聯繫人以及如何添加聯繫人的信息。除非您已經使用此用戶標識添加了鏡像聯繫人,否則您將不會收到任何回覆。

鏡像服務不提供對來自userinfo.info或userinfo.email的信息的直接訪問。如果您想將它們添加爲Glass for Contact,則需要先使用OAuth2庫將其取出。

+1

謝謝@Prisoner!通過對Contacts API和@LanceNanek幫助的深入瞭解,我們能夠解決這一問題。非常感激! –

+0

很高興我們能夠幫助@DayelOstraco。我敢肯定,我們兩個人都會讚賞最高票數。 {:與你的玻璃器皿玩得開心! – Prisoner

相關問題