如何获得python social auth中已配置后端的登录词干列表



我有一个运行django-rest-framework的Django项目,为BackboneJS应用程序提供后端。我正在尝试通过AJAX实现python-social-auth来验证应用程序。

我需要通过AJAX发送一个可能的登录URL列表,以在BackboneJS视图中呈现,例如

{ 'login_urls' : [
    "https://mydjangoserver.com/login/google-oauth2/",
    "https://mydjangoserver.com/login/facebook/", 
    ...] 
}

但要做到这一点,我需要在Django的后端访问这些数据。我可以访问AUTHENTICATION_BACKENDS设置,但这只提供了一个包含对模块引用的字符串列表——我该如何将这些字符串转换为url?

使用django示例应用程序utils(需要请求对象):

from social.backends.utils import user_backends_data
from social.apps.django_app.utils import Storage, BACKENDS
for name, backend in user_backends_data(request.user, BACKENDS, Storage).items():
    print backend.AUTHORIZATION_URL

我还没有测试过这个。它完全基于python-social-auth源代码分析。

由于mariodev的提醒,嵌入式social.backends.utils模块包含了一个从配置的设置中提取后端的功能。。。

from social.backends.utils import load_backends
import myprojectname.settings as settings
backends = load_backends(settings.AUTHENTICATION_BACKENDS)
login_urls = ['//%s/login/%s/' % (settings.MY_SERVER_HOSTNAME, name) for name in backend.keys()]

最新更新