Google Cloud Endpoints与另一家oAuth2提供商合作

时间:2013-04-08 06:00:38

标签: google-app-engine oauth-2.0 facebook-oauth google-cloud-endpoints

有没有办法将另一个OAuth2提供商与Google Cloud Endpoints一起使用?我的意思是,例如,从Facebook获取身份验证并使用它与我们使用Google帐户身份验证相同(使用gapi js并将用户类放在@ApiMethod上)

4 个答案:

答案 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以访问会话。