是否有可能使用谷歌云端点内置认证与谷歌+域API



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/+/域/认证/

如何集成这两个认证过程?这是一个web应用 (Java Script)与谷歌应用引擎(Java)后端。

在理想的情况下,我希望能够通过我的JS应用程序检索用户的个人资料/个人资料的基本信息,而用户是离线的。

用例:我有一个评论线程,其中每个评论都有一个作者作为com.google.appengine.api.users.User对象持久化在Google数据存储中。然而,当我渲染评论线程在我的JS web应用程序,我想显示每个作者的个人资料图片。如果我可以从web应用程序中调用每个评论者的简历,我就可以节省大量的后端工作。web应用程序将拥有JSON格式的用户对象。其中包括用户ID和电子邮件。

那么,你的用例是:

  • 你的用户认证到你的应用程序,授予基本的用户信息。在端点API
  • 中正确接收com.google.appengine.api.users.User对象所需的配置文件作用域
  • 您将这些User对象持久化到DB,当您检索它们以显示它们注释的线程时,您想要调用google+ API人员。get方法检索他们的头像图像URL

解决方案:如果您的用户提供了一个oauth流,让他们授予google+ API调用所需的范围(profile范围),除了常规端点"userinfo"。配置文件的作用域,调用Google+ API应该没有问题,无论是从JS客户端还是从Java后端,使用Google API客户端库,经过该流程获得凭据。

为了避免每次都对它们进行重新身份验证,您应该序列化并存储相关语言的凭据对象,或者您甚至可以简单地跟踪授予它们的刷新令牌,并通过低级OAuth流程获得新的访问令牌(您可能希望执行前者,因为它会为您执行此操作)。

正如web上其他地方(也在其他几个地方)所指出的,来自User对象的userid与Google+配置文件id不相同,因此在使用端点方法参数User对象时要注意这一点。因此,您将不能使用来自User对象的userid来调用people.get

相反,您应该存储用户第一次登录时的Google+配置文件ID,或者至少通过授予必要的Google+范围的oauth流,以及您已经使用的user对象。您必须使用(反)序列化凭证对象或刷新/访问令牌来调用Google+ API,一旦您从存储中的每个用户的数据模型中检索Google+配置文件id(无论您使用哪种解决方案,从Datastore到SQL等)

相关内容

  • 没有找到相关文章

最新更新