如何在Flask中访问重定向URI中的参数?

时间:2018-07-19 04:42:20

标签: python python-3.x flask oauth-2.0

我正在Flask中创建一个JMML(“加入我的邮件列表”)小部件,该小部件将数据提交到电子邮件营销平台,该平台遵循OAuth2流程。基本流程是:

  1. 我使用基本API URL,API密钥和重定向URI创建访问URL
  2. 该程序访问此URL,并将该程序的用户重定向到营销平台以登录并授予访问权限。
  3. 营销平台执行另一个重定向,该操作返回到我提供的重定向URI。 URI附加了我需要为JMML的应用POST请求提供的访问令牌。这是返回的URI的示例:

http://localhost:5000/redirect_url#access_token=2C1zxo3O0J1yo5Odolypuo9DSmcI

这是我遇到的问题:我不知道如何以编程方式在Python中使用最终的重定向url / uri作为变量。我可以让用户将其复制/粘贴到字段中,但是必须更好的方法。老实说,我什至不知道这种重定向重定向的术语。

这很可悲,我迷路了,但这是我到目前为止的收获:

@app.route('/redirect_url')
def redirect_url():
    # I have no idea how to actaully get the parameter out of the redirect url.
    pass

我已经检查了电子邮件营销公司的API的API文档,但是它们仅提供了在Ruby和PHP中处理Oauth2的代码提示。救命!

2 个答案:

答案 0 :(得分:1)

Miguel Grinberg有个不错的blog post,他在其中描述了如何在flask应用程序中使用OAuth。尽管我认为工作流程将与任何其他Web应用程序保持不变。

答案 1 :(得分:0)

Based on this似乎应该可以通过从url获取变量参数来获取访问令牌。我没有完整的代码,所以我无法测试,也没有在URL中使用#进行尝试,但这应该应该起作用

@app.route('/originalurl')
@app.route('/redirect_url#<access_token>')
def show_user_profile(access_token):
    if access_token:
        #do work
        return redirect(url_for('Anotherview')

    return render_template('template.hmtl')

否则,我们需要有关您使用Oauth的api的更多信息