我们的网络应用程序不提供Google帐户身份验证。我们使用WebApp2身份验证实现了我们自己的身份验证:http://webapp-improved.appspot.com/tutorials/auth.html。
我们希望将Cloud Endpoints用作移动应用/第三方开发人员的API,但我们仍希望使用oAuth2进行身份验证。
实施此步骤需要哪些步骤?我们是否需要在AppEngine上设置我们自己的oAuth服务器并且Google客户端库是否兼容?
答案 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授权信息传递给承载者。您可以完全访问端点上的此信息信息。
我希望它会对你有所帮助。