Google Cloud Endpoints拥有自己的身份验证流程,后端端点方法只需传递com.google.appengine.api.users.User
个对象。
https://cloud.google.com/appengine/docs/java/endpoints/auth
Google+ Domains API指定自己的身份验证过程以获取com.google.api.client.auth.oauth2.Credential
对象。这允许构建com.google.api.services.plusDomains.PlusDomain
对象。
https://developers.google.com/+/domains/authentication/
您如何整合这两个身份验证流程?这适用于带有Google App Engine(Java)后端的 Web应用程序(Java脚本)。
在理想情况下,我希望能够在用户离线时通过我的JS应用程序检索用户生物/个人资料基本信息。
用例:我有一个评论主题,其中每个评论都有一个作者在Google数据存储区中作为com.google.appengine.api.users.User
对象保留。但是,当我在我的JS Web应用程序中呈现评论线程时,我想为每个作者显示一张个人资料图片。如果我可以通过网络应用程序拨打电话来检索每个评论者的生物,我可以为后端节省大量工作。 Web应用程序将用户对象设为JSON。其中包括用户ID和电子邮件。
答案 0 :(得分:3)
所以,你的用例是:
com.google.appengine.api.users.User
对象所需的基本userinfo.profile范围解决方案:如果您的用户被提供了oauth流,除了常规端点" userinfo之外,他们还会为Google + API调用(profile
范围)授予the scope required。简介"范围,在通过该流程获取凭据后,使用Google API客户端库从JS客户端或Java后端调用Google+ API应该没有问题。
为了避免每次重新验证它们,您应该serialize and store a credentials object from the language in question,或者您甚至可以简单地跟踪其授权的刷新令牌,并通过低级OAuth舞蹈获得全新访问权限令牌(你可能想要做前者,因为它会为你做这件事)。
如上所述elsewhere在网络上(在其他几个地方也是如此),用户ID from the User object与Google+个人资料ID不同,因此在使用端点方法时请注意这一点参数用户对象。因此,您无法使用User对象中的用户标识来调用people.get
。
相反,您应该在用户首次signed-in或至少通过授予必要Google+范围的oauth流程时存储用户的Google+个人资料ID,以及您用户对象已经在使用。一旦您从存储中的每个用户的数据模型中检索Google+个人资料ID,您就必须使用(反)序列化凭据对象或刷新/访问令牌来调用Google+ API(无论您使用何种解决方案) ,从数据存储区到SQL等。)