[英]social-auth-app-django facebook backend state with redirect_uri
我知道我的問題聽起來像是重復的,但我在沒有找到任何解決方案的情況下到處尋找。
我正在為我的django webapp實現社交登錄。 到目前為止谷歌,推特和雅虎登錄已按預期工作。 但Facebook總是給出以下錯誤:
網址被阻止:此重定向失敗,因為重定向URI未在應用的客戶端OAuth設置中列入白名單。 確保客戶端和Web OAuth登錄已啟用,並將所有應用程序域添加為有效的OAuth重定向URI。
經過一番挖掘,我得學習如何正確設置我的Facebook登錄:下面的Facebook應用程序設置
App Domains
設置為domain.ext
Site URL
設置為https://www.domain.ext/
Valid OAuth Redirect URIs
設置為https://domain.ext/social/complete/facebook/
我還查看了重定向url(如下所示),發現它包含一個state
變量state=kMQH3TdKSdF8oYGGx7Xri4KgFaEQ9OyU
。 完整網址如下
https://www.facebook.com/v2.9/dialog/oauth?client_id=977674249054153&redirect_uri=https%3A%2F%2Fwww.domain.ext%2Fsocial%2Fcomplete%2Ffacebook%2F&state=kMQH3TdKSdF8oYGGx7Xri4KgFaEQ9OyU&return_scopes=true&scope=email%2Cpublic_profile
我的django應用程序上的facebook登錄URL是{% url 'social:begin' 'facebook' %}
'social_core.backends.facebook.FacebookOAuth2'
{% url 'social:begin' 'facebook' %}
我在AUTHENTICATION_BACKENDS
有'social_core.backends.facebook.FacebookOAuth2'
我搜索並發現social-core
github頁面上已經解決了這樣的問題。 它說從v1.7.0開始,這行REDIRECT_STATE = False
已被添加到facebook后端。 我挖了源代碼,發現是這樣的。 但我的應用程序的URL繼續發送狀態變量,我不知道為什么會這樣。 請其他人遇到這種奇怪的行為,如果是的話,你是怎么去解決它的?
你試過django-allauth嗎? 我發現這是一個更好的解決方案。 它為您提供內置支持的許多提供商和自定義提供商,為您提供第三方提供商集成。
我花了好幾個小時來處理這個問題,但事實證明我只需要這樣做Valid OAuth Redirect URIs
設置為https://www.domain.ext/social/complete/facebook/
請注意www.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.