没有Google帐户的Google Cloud端点

时间:2013-10-07 12:18:46

标签: google-app-engine authentication google-cloud-endpoints

我们的网络应用程序不提供Google帐户身份验证。我们使用WebApp2身份验证实现了我们自己的身份验证:http://webapp-improved.appspot.com/tutorials/auth.html

我们希望将Cloud Endpoints用作移动应用/第三方开发人员的API,但我们仍希望使用oAuth2进行身份验证。

实施此步骤需要哪些步骤?我们是否需要在AppEngine上设置我们自己的oAuth服务器并且Google客户端库是否兼容?

2 个答案:

答案 0 :(得分:1)

您无需做任何事情。我在app-engine上有一个联合登录应用程序,我最近添加了一个使用Cloud Endpoints的Android应用程序。您不必执行任何特殊操作,只需将User参数添加到您的函数中即可。在User对象中,您将找到要授权以访问数据的用户电子邮件。

@Api(name = "my_api",
        version = "v1",
        scopes = {"https://www.googleapis.com/auth/userinfo.email"},
        clientIds = {Constants.AUTH_CLIENT,
                Constants.AUTH_CLIENT_APIEXPLORER})
public class MyEndpoint {
    @ApiMethod(name = "fistEndpoint")
    public ResponseObject fistEndpoint(User user) throws OAuthRequestException {
        if (user == null) {
            throw new OAuthRequestException("Access denied!");
        }
        String email = user.getEmail();
        //Authorize the request here
        //make the ResponseObject and return it
    }
}

创建端点后访问: https://your-app.appspot.com/_ah/api/explorer并测试

更新 以上示例仅限于Google帐户。如果你想要一个不同类型的帐户,你可以查看这篇文章: Custom Authentication for Google Cloud Endpoints (instead of OAuth2)

答案 1 :(得分:0)

Google Cloud Endpoints是无状态的,因此如果您不使用Google身份验证,则无法将用户电子邮件检索到端点。

实际上,端点只是http请求,因此您可以将您的http授权信息传递给承载者。您可以完全访问端点上的此信息信息。

我希望它会对你有所帮助。