Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine 谷歌云端点与另一个oAuth2提供商_Google App Engine_Oauth 2.0_Facebook Oauth_Google Cloud Endpoints - Fatal编程技术网

Google app engine 谷歌云端点与另一个oAuth2提供商

Google app engine 谷歌云端点与另一个oAuth2提供商,google-app-engine,oauth-2.0,facebook-oauth,google-cloud-endpoints,Google App Engine,Oauth 2.0,Facebook Oauth,Google Cloud Endpoints,有没有办法将另一个OAuth2提供商与Google云端点一起使用?我的意思是,例如,从Facebook获得身份验证,并使用与我们使用Google Account Auth相同的方式使用它(使用gapi js并将用户类放在@ApiMethod)否。我遇到了其他人问这个问题以及Google人员的答案(如果我没记错的话)端点用户身份验证当前仅支持Google帐户。我编写了一个示例,将Facebook访问令牌交换为我的应用程序生成的令牌,并从端点方法中验证它: 您必须实现自己的验证器并更新@Api配置。

有没有办法将另一个OAuth2提供商与Google云端点一起使用?我的意思是,例如,从Facebook获得身份验证,并使用与我们使用Google Account Auth相同的方式使用它(使用gapi js并将用户类放在
@ApiMethod

否。我遇到了其他人问这个问题以及Google人员的答案(如果我没记错的话)端点用户身份验证当前仅支持Google帐户。

我编写了一个示例,将Facebook访问令牌交换为我的应用程序生成的令牌,并从端点方法中验证它:


您必须实现自己的
验证器
并更新
@Api
配置。基于此,一个简单的验证器将如下所示:

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})

您可以在中找到有关自定义身份验证程序的更多信息。

谷歌云端点允许您将用户、HttpServletRequest和HttpServletContext作为参数注入API方法中

它不是OAuth2,但这里是解决方案的开始:


建议的解决方案是在特定的api方法中注入HttpServletRequest来访问会话。

有没有实现替代方案的方法?比如在会话中存储用户?(我刚刚发现会话在Google Cloud Endpoint中也不起作用)当然,你可以实现任何你想要的替代方案,你可以通过端点传递你系统的令牌,但你必须自己实现身份验证。这里的问题是如何控制用户会话,因为Google Endpoint不提供会话,对吗,这是我的理解。@insaurraldap,这不是真的。您可以实现自己的auth模式,也可以使用其他提供程序实现OAuth。请检查:是否有与python等效的工具?@JanuszSkonieczny我不知道它是否适用于python,您可能应该问一个新问题:有人知道如何将安卓客户端的数据放入标头中吗?