标签: django-allauth

如何整合来自disqus的单点登录与django allauth

我正在使用django-allauth进行社交登录的django项目,同时我使用Disqus作为我网站的评论系统.

我想知道,如何使用Disqus与allauth的单点登录功能?

django disqus django-allauth

9
推荐指数
1
解决办法
1045
查看次数

django-allauth社交帐户在登录时连接到现有帐户

我有一个自定义用户模型,我正在使用django-allauth进行社交注册和登录.当用户使用已经使用电子邮件注册的社交帐户登录时,我正在尝试将现有用户连接到新的社交帐户.我找到了这个链接.

def pre_social_login(self, request, sociallogin):
    user = sociallogin.account.user
    if user.id:
        return
    try:
        customer = Customer.objects.get(email=user.email)
    except Customer.DoesNotExist:
        pass
    else:
        perform_login(request, customer, 'none')
Run Code Online (Sandbox Code Playgroud)

但是当我尝试通过社交帐户登录时,我收到了错误消息.

RelatedObjectDoesNotExist at /accounts/facebook/login/callback/
SocialAccount has no user.
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.

我也知道这方面的安全问题.但我仍然想尝试这个.

python django django-allauth

9
推荐指数
3
解决办法
5425
查看次数

Django-allauth检索头像个人资料图片

我使用django-rest-authdjango-allauth利用用户的Facebook的个人资料有关用户注册/登录.

现在,我可以从Facebook获取一些标准信息(默认为所有auth).

是否可以检索头像图片列表?如何在allAuth中成功?

django facebook-graph-api django-allauth django-rest-auth

9
推荐指数
2
解决办法
2873
查看次数

如何使用django-allauth禁用新帐户创建,但仍然允许现有用户登录?

我们已经运行了一段时间的网站,django-allauth用于使用以下任何一种身份验证:

  • 传统的基于电子邮件的注册
  • 谷歌登录
  • Twitter登录
  • Facebook登入

...但现在我们想要阻止任何人创建一个新帐户,同时仍允许之前使用这些方法创建帐户的人能够登录.是否有设置可以让我们这样做?我不清楚任何这些记录的设置将允许我们配置它.

与django-allauth相关的当前设置是:

INSTALLED_APPS = (
    'django.contrib.auth',
    ...
    'allauth',
    'allauth.account',
    'allauth.socialaccount',
    'allauth.socialaccount.providers.google',
    'allauth.socialaccount.providers.facebook',
    'allauth.socialaccount.providers.twitter',
    ...
)

AUTHENTICATION_BACKENDS = (
    # Needed to login by username in Django admin, regardless of `allauth`
    "django.contrib.auth.backends.ModelBackend",
    # `allauth` specific authentication methods, such as login by e-mail
    "allauth.account.auth_backends.AuthenticationBackend",
)

SOCIALACCOUNT_PROVIDERS = {
    'google': {'SCOPE': ['https://www.googleapis.com/auth/userinfo.profile'],
               'AUTH_PARAMS': {'access_type': 'online'}},
    'facebook': {'SCOPE': ['email',]},
}

LOGIN_REDIRECT_URL = '/'

ACCOUNT_EMAIL_VERIFICATION = "mandatory"
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_USERNAME_REQUIRED = True
SOCIALACCOUNT_AUTO_SIGNUP = True
Run Code Online (Sandbox Code Playgroud)

python authentication django django-allauth

9
推荐指数
1
解决办法
3466
查看次数

几天不活动后,Django Allauth似乎注销了用户

用户登录时,我希望用户无限期保持登录状态,除非他们自己提示退出。

我的网站(使用django-allauth进行身份验证)的情况似乎是,当用户登录然后几天不访问该网站(尚未测试多少天)时,它丢失了身份验证,并且它们不再登录。

我希望身份验证状态是永久的,并且不会过期。

有人可以解释一下,告诉我如何实现我想要的。

尝试调查会话Cookie的到期时间并研究默认值。还没走。

python authentication django django-allauth

9
推荐指数
1
解决办法
162
查看次数

覆盖注册视图django-allauth

我要求用户用自定义表单填写额外的字段.在其中一个领域,我必须让用户选择多个分层标签.为此,我需要将标记从视图传递到模板signup.html

from classes.Tags import Tags
from django.shortcuts import render_to_response
from allauth.socialaccount import views as signup_views

def signup_view(request):
    tags = Tags()
    parameters={}
    all_tags = tags.get_tags()
    parameters['all_tags'] = all_tags
    response = signup_views.signup(request)
    return response
Run Code Online (Sandbox Code Playgroud)

在urls.py中,我在allauth网址包含行之前添加了这一行.

url(r'^accounts/social/signup/', 'mainapp.signup_views.signup_view', name = 'account_signup'),
url(r'^accounts/', include('allauth.urls')),
Run Code Online (Sandbox Code Playgroud)

我需要的是我需要将all_tags添加到响应中,以便我可以从模板中访问它.我怎么做?

python django django-allauth

8
推荐指数
1
解决办法
7374
查看次数

django-allauth 不使用我的自定义适配器

我正在使用django 1.6.5django-allauth 0.18.0,一旦我们在 django 的管理面板中创建社交应用程序,社交登录就会按预期工作。

因此,我的下一步是尝试通过使用适配器来更改模块的行为。

它在文档中看起来很简单, 但不知何故,我似乎无法让django-allauth使用我的自定义适配器。

所以这是我尝试将pdb插入到我的适配器方法中的尝试。

这是我的文件夹/文件结构:

.
??? manage.py
??? requirements.freeze
??? foo
?   ??? __init__.py
?   ??? settings.py
?   ??? urls.py
?   ??? wsgi.py
??? foo_app
    ??? adapters.py
    ??? views.py
    ??? etc...
Run Code Online (Sandbox Code Playgroud)

这是我的foo/settings.py文件:

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sites',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'south',
    'allauth',
    'allauth.account',
    'allauth.socialaccount',
    'allauth.socialaccount.providers.facebook',
    'foo_app'
)
ACCOUNT_ADAPTER="foo_app.adapters.FooAppAccountAdapter"
SOCIALACCOUNT_ADAPTER="foo_app.adapters.FooAppSocialAccountAdapter"
Run Code Online (Sandbox Code Playgroud)

这是我的foo_app/adapters.py文件:

# -*- coding: utf-8 -*-

import pdb

from …
Run Code Online (Sandbox Code Playgroud)

django adapter django-allauth

8
推荐指数
1
解决办法
4534
查看次数

django-allauth将用户名设置为与电子邮件相同

我有一个注册表单,只询问电子邮件和密码.当用户注册时,django-allauth通过从用户的电子邮件地址中删除"@email"后缀来为该用户创建用户名.

例如,如果用户使用" some-user@example.com "注册,则其用户名将为" some-user ",如果其他用户使用" some-user@gmail.com "注册,则其用户名将为" 一些用户 "

但我想要的是用户的用户名和电子邮件具有相同的价值.

那么如何配置django-allauth将用户名设置为用户电子邮件而不删除其后缀呢?

如果可能,如何在不创建自定义用户的情况下执行此操作.

在我的settings.py中:

#########################
# AllAuth Configuration #
#########################
ACCOUNT_AUTHENTICATION_METHOD = 'email'
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_UNIQUE_EMAIL = True
ACCOUNT_USERNAME_REQUIRED = False
ACCOUNT_EMAIL_VERIFICATION = 'mandatory'
ACCOUNT_PASSWORD_MIN_LENGTH = 8
Run Code Online (Sandbox Code Playgroud)

python django django-models django-forms django-allauth

8
推荐指数
2
解决办法
1088
查看次数

如何使用django allauth创建合适的用户?

  • 如果我只是一个电子邮件地址
  • 如果我不关心密码atm(用户稍后将通过"令牌链接"登录)

在纯Django我会这样做:

from django.contrib.auth.models import User
user = User.objects.create_user(username=email, email=email)
Run Code Online (Sandbox Code Playgroud)

但是django allauth带来了这些EmailAdress东西.我是否也必须创建其中一个然后我很好?

from allauth.account.models import EmailAddress
EmailAddress.objects.create(user=user, email=email, primary=True, verified=False)
Run Code Online (Sandbox Code Playgroud)

我不想打破一些django allauth逻辑,现有的适配器方法不适合我的需要.

编辑:替换setup_user_emailEmailAddress

EDIT2:替换add_emailcreate,想要设置primary=True

django django-allauth

8
推荐指数
1
解决办法
1002
查看次数

如何使用 allauth 和 rest-auth 从 React 前端在 Django 中重新发送确认电子邮件

我将 Django 2.0.10 与 rest 框架、rest-auth 和 allauth 一起使用,并带有 React 前端。Rest-auth 使用 JWT 令牌身份验证提供登录和注销功能,但我无法弄清楚如何允许用户请求重新发送验证电子邮件。

我希望用户能够登录并按下“重新发送确认电子邮件”按钮。例如,如果他们不小心删除了电子邮件,他们需要能够请求另一个。

我已经看到帖子建议您可以使用 allauth 的 send_email_confirmation,但这需要一个由模板生成的 CSRF 令牌。我尝试按照文档从 csrf 中排除,但它没有任何不同。我还尝试按照此处的建议设置 authentication_classes = () 。这是我的代码:

设置:

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework.authentication.TokenAuthentication',
    ],
}
Run Code Online (Sandbox Code Playgroud)

网址.py

from users.views import EmailConfirmation

urlpatterns = [
...
url(r'^/sendconfirmationemail/', EmailConfirmation.as_view(), name='send-email-confirmation')
]
Run Code Online (Sandbox Code Playgroud)

视图.py

from rest_framework.views import APIView
from django.views.decorators.csrf import csrf_exempt
from django.utils.decorators import method_decorator

class EmailConfirmation(APIView):
    @method_decorator(csrf_exempt)
    authentication_classes = ()

    def post(self):
        send_email_confirmation(user=self.request.user)
Run Code Online (Sandbox Code Playgroud)

当我发布到端点“/api/v1/rest-auth/sendconfirmationemail/”时,我收到错误禁止:

<p>You are seeing this …
Run Code Online (Sandbox Code Playgroud)

django email-validation django-allauth

8
推荐指数
1
解决办法
2375
查看次数