到目前为止我已尝试过这些:
SocialApp.objects.get(provider ='provider-allowed-in-app') 这会告诉我提供者是否确实存在。 但需要注意的是,如果我在我的设置中安装了不同的提供程序,那么此查询无法判断提供程序是否允许在我的Django项目中处于活动状态。
In [104]: for app in s.INSTALLED_APPS:
.....: if 'google' in app:
.....: print(app)
.....:
allauth.socialaccount.providers.google
但我想以适当的方式做到这一点。也许有一种方法可以做到这一点? 我在allauth中找到了这个模块: allauth.socialaccount.providers
使用它,我可以这样做:
providers.registry.get_list()
这给了我这样的东西:
dict_values([<allauth.socialaccount.providers.google.provider.GoogleProvider object at 0x7f5803998470>, <allauth.socialaccount.providers.facebook.provider.FacebookProvider object at 0x7f5803998198>])
那就是几乎我想要的东西。但我需要一个像这样的清单
['google', 'facebook']
,这样我至少可以做一个简单的事情:
registered_proviers = ['google', 'facebook']
if provider in registered_providers:
但如果我可以使用某些allauth函数,那就更好了:
if is_registered_provider(provider):
感谢。
答案 0 :(得分:3)
您可以尝试以下内容:
providers.registry.provider_map.keys()