Google云terminal和用户的身份validation
我目前刚进入AppEngine世界,并希望使用云端点为我正在开发的移动应用程序创build后端。
我现在的问题之一是关于用户的身份validation。 我一直关注App Engine上的Udacity MOOC,并且教会了我们如何使用Google帐户来validation用户的API请求。 在后端,我们只需要添加一个User
参数给我们的方法,并检查用户是否login。据我所知,这个用户参数是由App Engine根据请求的Authorization
头生成的。 ( 可能需要一些确认 )
现在,有一堆我不确定要理解的东西,这在MOOC上没有得到很好的解释。
现在,我想知道这是否与其他OAuth计划兼容,除了Google? 所以,如果我想实现Facebook身份validation,我会只通过Facebook访问令牌?
从我search的内容来看,使用Android上的Facebook SDK将导致我能够生成一个用户访问令牌,它可以将我的用户识别为脸书 。 发送到我的后端后,我想要检查它与Facebook的有效性,如果它是有效的,创build一个新的用户到我的应用程序。 现在,我也想生成一个新的令牌,标识我的应用程序的用户。 我需要做些什么来做到这一点?
您可以将自己的身份validation器提供给端点,并使用您的身份validation器https://developers.google.com/appengine/docs/java/endpoints/javadoc/com/google/api/server/spi/config/获取注入的用户Authenticator.html 。
Facebook的凭证可以通过头部发送,例如Authorization头部,并且可以通过HttpServletRequest从后台访问,您可以在Authenticator.authenticate方法中处理。
例如。
// Custom Authenticator class public class MyAuthenticator implements Authenticator { @Override public User authenticate(HttpServletRequest request) { String token = request.getHeader("Authorization"); if (token != null) { String user = authenticateFacebook(token); // apply your Facebook auth. if (user != null) { return new User(user); } } return null; } } // Endpoints class. @Api(name = "example", authenticators = {MyAuthenticator.class}) public class MyEndpoints { public Container getThing(User user) { Container c = new Container(); if (user != null) { c.email = user.getEmail(); } return c; } public class Container { public String email; public String extraData; } }
当我尝试你的例子,我总是得到一个:java.lang.NullPointerException:必须指定authDomain。 但是我不能在用户对象上设置authDomain。 有任何想法吗?
在版本1.9.22