Mag*_*cky 25 authentication google-app-engine android facebook-graph-api google-cloud-endpoints
我目前刚进入AppEngine世界,并希望使用Cloud Endpoints为我正在开发的移动应用程序创建后端.
我现在的一个问题是关于用户的身份验证.我一直在关注App Engine上的Udacity的MOOC,他们教我们如何使用Google帐户验证用户的API请求.在后端,我们只需要在User我们的方法中添加一个参数,并检查用户是否已登录.据我所知,此用户参数由App Engine根据Authorization我们的请求标题生成.(可能需要一些确认)
现在,有一些我不确定理解的东西,并没有在这个MOOC上得到很好的解释.
现在,我想知道这是否与Google之外的其他OAuth方案兼容?那么,如果我想实现Facebook身份验证,我会简单地传递facebook访问令牌吗?
根据我搜索的内容,在Android上使用Facebook SDK会让我能够生成一个用户访问令牌,用于识别我的用户到Facebook.将它发送到我的后端后,我想检查它与Facebook的有效性,如果它有效,请为我的应用程序创建一个新用户.现在,我还想生成一个新标记,用于标识我的应用程序的用户.我需要做什么?
Min*_*Wan 52
您可以为端点提供自己的身份验证器,注册用户将通过身份验证器获取 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;
  }
}
| 归档时间: | 
 | 
| 查看次数: | 5459 次 | 
| 最近记录: |