我正在制作一个Web应用程序,允许用户使用simpleauth进行身份验证。目前,我将支持Google和Facebook。除了登录和注销(使用webapp2),Web应用程序将由Cloud Endpoint API组成。客户端将是Web、Android和iOS。
我的问题是,使用Endpoints Proto Datastore,如果用户的身份验证提供程序是Facebook(或任何其他受支持的OAuth2提供程序),我可以使用
我的问题是,使用Endpoints Proto Datastore,如果用户的身份验证提供程序是Facebook(或任何其他受支持的OAuth2提供程序),我可以使用
user_required=True
并调用endpoints.get_current_user()
从@Model.method
中获取我的用户吗?如果不可能,这是否意味着我不应该有user_required=True
,而应该从提供程序获取永久用户ID,并将其保存在数据存储中,为该用户生成自己的身份验证令牌,然后将该令牌传递给每个请求?
编辑: 不要在不同的方法之间传递认证令牌,让已认证的用户请求一个“API令牌”,然后将其传递给API方法是否有意义?这个令牌需要包含在POST或GET主体中吗?还是可以放在头/cookie中(我在SO上看到了一些关于云端点的头和cookie的问题,但那是一段时间以前的事情)。假设非Google认证无法工作。
endpoints.get_current_user()
,而不是编写代码手动检查令牌是否对该用户有效。我的备选方案是使用注释来处理服务器端的身份验证检查,但我很想听听appengine团队(或确切知道的人)是否存在更优雅的解决方案。 - Eliezer