首页 > 解决方案 > 不同域上的 Flask Dance oauth

问题描述

我正在为不同的服务实现 Oauth,并且正在使用“OAuth2ConsumerBlueprint”(使用烧瓶舞)。我正在考虑 Flask-OAuth,但我认为我最终会遇到与 Flask-Dance 相同的问题。我打算做的是:

  1. 用户继续“.mydomain.com”

  2. 例如,用户单击通过 FB 登录

  3. 用户访问 social.mydomain.com(以便授权 URL 始终相同)

  4. 登录后的用户应该被带到“.mydomain.com”

看起来我找不到办法做到这一点..这应该是可行的。我试图解析出不同的信息,例如:

打印(请求)

打印(request.referrer)

我什至使用了:@oauth_authorized.connect 打印了所有信息,看看我是否可以收集一些额外的信息以重复使用

print(vars(request))
print(vars(blueprint))
print(vars(token))
print(session)

此外,我尝试在 GET 参数中添加一个“foo”变量,以查看是否可以从 social.mydomain.com 再次读取它,但我不能。不知道如何将用户重定向回原来的 .mydomain.com

关于如何在特定子域上完成身份验证(因此我只需要将一个子域列入白名单)然后将用户重定向到他自己的域的任何建议?

这就是我设置一切的方式:

facebook = OAuth2ConsumerBlueprint(
    "fb_social", __name__, url_prefix='/fb', 
    client_id=FB_CLIENT_ID,
    client_secret=FB_SECRET,
    scope='email',
    base_url="https://graph.facebook.com/",
    token_url="https://graph.facebook.com/oauth/access_token",
    authorization_url="https://www.facebook.com/dialog/oauth",
    redirect_to='fb_social.social_facebook',
)

非常感谢

标签: flaskflask-oauthlibflask-dance

解决方案


挂钩oauth_authorized信号,并返回一个重定向到您希望用户去的位置。


推荐阅读