0

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

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

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

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

4

2 回答 2

2

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

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源代码分析。

于 2013-11-22T23:07:06.793 回答
1

感谢 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()]
于 2013-11-23T12:29:42.543 回答