有没有办法将另一个OAuth2提供商与Google Cloud Endpoints一起使用?我的意思是,例如,从Facebook获取身份验证并使用它与我们使用Google帐户身份验证相同(使用gapi js并将用户类放在@ApiMethod
上)
答案 0 :(得分:7)
您必须实施自己的Authenticator
并更新@Api
配置。基于此answer,简单的身份验证器将如下所示:
public class MyAuthenticator implements Authenticator {
@Override
public User authenticate(HttpServletRequest request) {
String token = request.getHeader("Authorization");
if (token != null) {
// apply your Facebook/Twitter/OAuth2 authentication
String user = authenticate(token);
if (user != null) {
return new User(user);
}
}
return null;
}
}
您的API定义
@Api(name = "example", authenticators = {MyAuthenticator.class})
有关自定义身份验证器的更多信息,请参阅Google documentation。
答案 1 :(得分:5)
没有。我遇到了其他人问这个问题,谷歌人的答案(如果我没记错的话)是端点用户身份验证目前只支持谷歌帐户。
答案 2 :(得分:2)
我写了一个示例,为我的应用程序生成的一个Facebook访问令牌交换,并在端点方法中验证它:
https://github.com/loudnate/appengine-endpoints-auth-example
答案 3 :(得分:2)
Google Cloud Endpoints允许您将User,HttpServletRequest和HttpServletContext恢复为API方法,方法是将其作为参数注入。
这不是OAuth2,但这是一个解决方案的开头: https://www.yanchware.com/custom-authentication-for-google-cloud-endpoints/
建议的解决方案是在特定的api方法中注入HttpServletRequest以访问会话。