没有其他提供商的列表。
我将问题删除为
env/Lib/site-packages/allauth/socialaccount/adapter.py
-> DefaultSocialAccountAdapter(object)
-> list_apps(self, request, provider=None, client_id=None)
def list_apps(self, request, provider=None, client_id=None):
"""SocialApp's can be setup in the database, or, via
`settings.SOCIALACCOUNT_PROVIDERS`. This methods returns a uniform list
of all known apps matching the specified criteria, and blends both
(db/settings) sources of data.
"""
# NOTE: Avoid loading models at top due to registry boot...
from allauth.socialaccount.models import SocialApp
# Map provider to the list of apps.
provider_to_apps = {}
# First, populate it with the DB backed apps.
if request:
db_apps = SocialApp.objects.on_site(request)
# <-------- filter according "site_id" only if request is given
else:
db_apps = SocialApp.objects.all()
在错误跟踪中,事实证明,在“请求”参数未移交的方式上,因此没有过滤器“ site_id”,因此返回了2个提供商 - >例外:
Traceback (most recent call last):
File "...\env\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
response = get_response(request)
File "...\env\lib\site-packages\django\core\handlers\base.py", line 181, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "...\env\lib\site-packages\allauth\socialaccount\providers\oauth2\views.py", line 84, in view
return self.dispatch(request, *args, **kwargs)
File "...\env\lib\site-packages\allauth\socialaccount\providers\oauth2\views.py", line 162, in dispatch
return complete_social_login(request, login)
File "...\env\lib\site-packages\allauth\socialaccount\helpers.py", line 208, in complete_social_login
sociallogin.lookup()
# <------- from here "request" is lost
File "...\env\lib\site-packages\allauth\socialaccount\models.py", line 282, in lookup
provider_id = self.account.get_provider().id
File "...\env\lib\site-packages\allauth\socialaccount\models.py", line 141, in get_provider
provider = self._provider = adapter.get_provider(
File "...\env\lib\site-packages\allauth\socialaccount\adapter.py", line 205, in get_provider
app = self.get_app(request, provider=provider)
File "...\env\lib\site-packages\allauth\socialaccount\adapter.py", line 299, in get_app
raise MultipleObjectsReturned
我深入探讨了代码,这对我来说似乎是一个错误?
在我的情况下,问题之所以发生,是因为我在两个地方添加了cocialapp
:
在设置文件中使用
SOCIALACCOUNT_PROVIDERS
在
socialApp表下的数据库通常存储提供商的详细信息。
这重复引起冲突,导致了意外的行为。删除冗余条目解决了问题。