我正在嘗試編寫一個將用戶重定向到OAuth URL以進行身份驗證/授權的Python 3.5 Flask應用程序。作爲重定向的一部分,我必須包含Authorization
標題。 Flask中內置的redirect()
方法似乎不支持添加HTTP標頭。重定向到帶有標頭的OAuth網址
在這樣的應用程序中處理此問題的正確方法是什麼?
我正在嘗試編寫一個將用戶重定向到OAuth URL以進行身份驗證/授權的Python 3.5 Flask應用程序。作爲重定向的一部分,我必須包含Authorization
標題。 Flask中內置的redirect()
方法似乎不支持添加HTTP標頭。重定向到帶有標頭的OAuth網址
在這樣的應用程序中處理此問題的正確方法是什麼?
您將需要構建自己的響應對象來添加標題。你可以看看這裏的文檔:http://docs.python-requests.org/en/master/api/#requests.Response
爲您的使用情況下,一個簡單的例子是這樣的:
response = Response(headers={'Authorization': 'whatever'},
is_redirect=True,
url="https://your-redirected-url.com")
return response
編輯:進一步信息
另外,我想看看https://github.com/lepture/flask-oauthlib如果你是有興趣使用圖書館。它支持oAuth1和oAuth2,使用標準Flask應用程序進行安裝相對容易。
編輯:做
今天早上,我想起了一個簡單的方法來做到這一點的另一種方式。你可以調用重定向函數,它將返回一個瓶頸響應對象。然後你就可以在新創建的對象上設置標題。
response = redirect('https://url')
response.headers = {'authorization': 'whatever'}
return response
您是否嘗試過使用https://pythonhosted.org/Flask-OAuth/? – jonrsharpe
@jonrsharpe我還沒有嘗試過,沒有。我試圖理解原始過程,但最終我可能會最終加入類似的東西。它表示它只與oAuth 1.0a兼容,並且有相當多的oAuth 2.0服務。 –
如果你想自己實現它,這裏有一個Flask的OAuth 2例子:https://github.com/reddit/reddit/wiki/OAuth2-Python-Example。但它似乎沒有重定向。 – jonrsharpe