2

我们试图让 Glass 用户能够请求从时间线卡向他们发送电子邮件。在通知回调 Servlet 上,我们正在尝试以下操作来检索用户的电子邮件地址:

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

从经过身份验证的用户的 UserInfo 对象中检索电子邮件时,我们不会得到结果。我们的应用程序具有以下可用于应用程序服务器的范围:

"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"

我们是否允许检索经过身份验证的用户的电子邮件地址,我是否缺少权限,或者是否有其他方法可以请求该数据?

4

2 回答 2

1

您正在进行的 getContact 调用与用户的电子邮件地址没有任何关系。您可以在此处阅读联系人所指的内容:
https ://developers.google.com/glass/contacts

为了获取用户的电子邮件地址,我已成功使用用于授权 Glass mirror API 应用程序的相同身份验证令牌,并添加了您提到的调用此 URL 的范围:
https ://www.googleapis.com/userinfo/email?alt =json

此方法似乎在初始授权后停止工作,因此请务必在用户首次授权应用程序并保存电子邮件时执行此操作。

虽然我之前也刚刚从 AppEngine 的 UserService 收到了电子邮件,但如果您碰巧在 AppEngine 上运行,这会更容易:
https ://developers.google.com/appengine/docs/java/javadoc/com/google/应用引擎/api/用户/用户服务

于 2013-10-06T01:53:00.430 回答
0

所以问题归结为“为什么我没有收到我发送到 Google Mirror 服务的这个用户 ID 的联系信息?”

Mirror 服务仅提供 Glassware 添加的联系人的联系信息。有关Glass 中的联系人以及如何添加联系人的更多信息,请参阅https://developers.google.com/glass/contacts 。除非您已经使用此 userId 添加了镜像联系人,否则您将不会得到任何回报。

镜像服务不提供对来自 userinfo.info 或 userinfo.email 的信息的直接访问。如果您想将它们添加为 Glass 的联系人,您需要首先使用 OAuth2 库来获取它。

于 2013-09-27T19:54:31.557 回答