Django allauth - 检查提供者是否是我项目中的活动提供者

时间:2015-02-25 12:35:18

标签: django social django-allauth

到目前为止我已尝试过这些:

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):

感谢。

1 个答案:

答案 0 :(得分:3)

您可以尝试以下内容:

providers.registry.provider_map.keys()