如果未登录,则服务器端重定向

Server-side redirect if not logged in

我使用 Cloud Endpoints 并执行客户端 oauth 来访问我的后端。这工作正常,除了这意味着我只能在整个页面和附加脚本加载并且 oauth 请求完成后检查点击我的应用程序 URL 的人是否是用户。

我想启用服务器端身份验证,这样我就可以对我的目标网页和我的应用程序使用相同的 URL,并将此人重定向到该应用程序(如果她是用户)或着陆页,如果她不是。

问题是 User Tutorial uses the UserService for authentication whereas Cloud Endpoints uses the OAuth Service. I can't figure out how to use OAuth in my redirect filter because all the links from the OAuth section linked to above are for OAuth 1 and are deprecated.

我如何检查我的重定向过滤器来访者是否是用户,并同时获得一个令牌,如果她是用户,我可以使用该令牌随后调用我的端点?

我正在使用 Google Api JS client 调用云端点,因此该解决方案将与其最佳集成,使用 gapi.auth.setToken(token) 和检索到的令牌并绕过整个 gapi.auth.authorize(params, callback)跳舞。

您可以使用用户 API 作为端点,如果不符合您的需要,则无需使用 OAuth。您只需要将 com.google.appengine.api.users.User 类型的参数添加到您的端点。如所述 here.

例如:

 @ApiMethod(name = "scores.insert")
    public Score insert(Score score, User user) throws OAuthRequestException, IOException {
      //Check if user is null
      //Do your thing

    }

您可以为登录流程提供自定义 servlet 实现,您将通过提供新流程获取 oauth-token,然后验证该访问令牌以授予对受保护资源的授权。

Google 提供了很好的参考文档 here and You can use this 示例代码 repo 供参考