2017-01-12 5 views
1

私はフラスコで新しく、ページのリダイレクト時に混乱しました。ので、ここでトークン付きリダイレクトフラスコ

は、私は私のログインページ 例えば、サードパーティにリダイレクトする必要があり、問題である:

@app.route('/hk/login/3rdparty', methods=['GET']) 
def login_3rdparty(): 
    if request.method == 'GET': 
    app_id = 'xxxxx' 
    secret = 'xxxxx' 
    data = 3rdparty.connect(app_id, secret) 
    return data 

と私はそれがこのように返すウェブに直接:

{"url":"http://demo3.3rdparty.com/partner/code/hk?token=sometoke-sometoken-sometoken"} 

私はリターンjsonからどのようにリダイレクトするのですか? iは/ HK /ログイン/ 3rdpartyを指示した後、あなたの質問でdata変数はJSONオブジェクトが含まれている場合ので、それは

+0

必要なURLを含む 'data'はjsonですか? 'リダイレクト(データ['url'])を返すだけですか?このために、 'from flask import redirect'をファイルに追加する必要があります。 – coralvanda

+0

はい、データには必要なURLが含まれています。私はあなたのソリューションを試してみましたが、それがこの のように返す「戻りリダイレクト(データ[ 『URL』]) はTypeError:文字列のインデックスは整数でなければなりません」聞いて喜ん @coralv – snow

+0

、@SNOW。私はその情報といくつかの詳細で答えを出す。役に立った場合は、受け入れてください。 – coralvanda

答えて

1

私の悪い英語のため申し訳ありませんそのURL

の背面にトークンを使用してWebにリダイレクトされます必要な場合は、redirect()関数を使用して、ユーザーに含まれているアドレスにユーザーを送信することができます。あなたの答えは両方のコメントを組み合わせていますが、私はこれを追加して、他の人が必要な文を見ることができるようにしたいと思います。

import json 
from flask import redirect 

@app.route('/hk/login/3rdparty') 
def login_3rdparty(): 
    app_id = 'xxxxx' 
    secret = 'xxxxx' 
    raw_data = 3rdparty.connect(app_id, secret) 
    data = json.loads(raw_data) 
    return redirect (data['url']) 

私はあなたがそれさえも、この機能が使用する唯一の方法だと、メソッドとしてGETを指定する必要はないと思います。良い仕事を続けなさい、SNOW。

関連する問題