我正在尝试解决在Google App Engine上运行的AllAuth/Django 1.7引发的连接错误:我认为错误可能在Sessions配置中,但我无法识别问题.本地注册正常运行,但社交登录会引发错误.
编辑: LinkedIn工作正常.
编辑:在本地服务器上; 输入凭据后,我得到"必须是_socket.socket,而不是套接字".
编辑: AppEngine提供http或https的内容似乎有些含糊不清; 虽然页面是https,但URI正在以http格式接收.
编辑:我的包每个冻结:
AppEngine-Email-Backend==1.0
Django==1.7.2
GoogleAppEngineCloudStorageClient==1.9.15.0
MySQL-python==1.2.4b4
bootstrap-admin==0.3.3
django-allauth==0.19.0
django-appengine-toolkit==0.2.1
django-crispy-forms==1.4.0
django-localflavor==1.1
djangoappengine==1.6.3
djangotoolbox==1.6.2
mysqlclient==1.3.4
oauthlib==0.7.2
python-openid==2.2.5
requests==2.5.1
requests-oauthlib==0.4.2
wsgiref==0.1.2
Run Code Online (Sandbox Code Playgroud)
这是我的踪迹:
Request Method: GET
Request URL: https://[app].appspot.com/accounts/google/login/callback/?state=LrL6Pw08bT7r&code=4/Og6R5AWIQX9WFGyF7XsXAVJHfbyBLRbIqxnflCyS2Kg.omD5uljwob8dPm8kb2vw2M1dUc7elQI
Django Version: 1.7.2
Python Version: 2.7.5
Installed Applications:
('bootstrap_admin',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.sites',
'django.contrib.admindocs',
'django.contrib.sitemaps',
'django.contrib.flatpages',
'appengine_toolkit',
'djangoappengine',
'localflavor',
'crispy_forms',
'allauth',
'allauth.account',
'allauth.socialaccount',
'allauth.socialaccount.providers.google',
'supplier',
'main')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware')
Traceback:
File "/base/data/home/apps/s~[app]/3.381542196672942284/django/core/handlers/base.py" …Run Code Online (Sandbox Code Playgroud) python django google-app-engine permission-denied django-allauth
我一直试图让两个第三方应用程序在一起玩得很好,而且由于他们的名字,它并没有为我工作.
我试图开始工作的两个应用程序是django-user-accounts和django-allauth.问题是,两个应用程序使用相同的命名空间"帐户",我不明白我应该修复它们的方式.
我确实找到了一些东西像这样,这似乎是去修复它的方式,但是当我试图实现它,我有两个问题.
allauth包下面有许多不同的应用程序,为了获取它的帐户应用程序文件夹,我还必须allauth首先创建文件夹,这使得其他应用程序无法访问.这是我到目前为止所拥有的.
在我的项目文件夹下我创建了这个结构:
allauth
??? account
? ??? apps.py
? ??? __init__.py
??? __init__.py
Run Code Online (Sandbox Code Playgroud)
在allauth.account.__init__,我有:
from django.apps import AppConfig
default_app_config = 'allauth.account.apps.CustomAccountAppConfig'
Run Code Online (Sandbox Code Playgroud)
在allauth.account.apps我有:
from django.apps import AppConfig
class CustomAccountAppConfig(AppConfig):
verbose_name = 'custom account'
name = "allauth.account"
label = "custom_account"
def __init__(self, app_name, app_module):
AppConfig.__init__(self,app_name, app_module)
Run Code Online (Sandbox Code Playgroud)
这似乎解决了与名称的冲突,但我得到了ImportError: No module named 'allauth.socialaccount',因为它已经覆盖了allauth包.
如何解决此命名冲突并保持所有其他子包和应用程序正常工作?
我正在尝试使用 Django Rest Framework 和 Django-Allauth 创建密码恢复流程。
Django-Allauth 已经完成了我需要的一切,我的问题是我可以以编程方式调用 django-allauth 函数或从 DRF 接收我想要重置的电子邮件的视图,并继续正常的 allauth 流程的其余部分(例如创建临时令牌和发送电子邮件给客户?
如果其中一个应用程序正在做我需要的一切,我不认为必须重写所有代码。只需要一些关于如何“粘合”它们的帮助:)
python django password-recovery django-rest-framework django-allauth
在已有使用该电子邮件的帐户的情况下尝试使用社交帐户登录时,会显示以下消息:
An account already exists with this e-mail address. Please sign in to that account first, then connect your Google account.
现在我想更改该消息。起初我试图覆盖ACCOUNT_SIGNUP_FORM_CLASS = 'mymodule.forms.MySignupForm'并给它我自己的raise_duplicate_email_error方法,但该方法从未被调用。
表格如下所示:
class SignupForm(forms.Form):
first_name = forms.CharField()
last_name = forms.CharField()
boolflag = forms.BooleanField()
def raise_duplicate_email_error(self):
# here I tried to override the method, but it is not called
raise forms.ValidationError(
_("An account already exists with this e-mail address."
" Please sign in to that account."))
def signup(self, request, user):
# do stuff to …Run Code Online (Sandbox Code Playgroud) 使用 rest-framework 和 django-allauth 设置标志删除登录和注册所需的用户名:
#settings.py
ACCOUNT_AUTHENTICATION_METHOD = 'email'
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_UNIQUE_EMAIL = True
ACCOUNT_USERNAME_REQUIRED = False
Run Code Online (Sandbox Code Playgroud)
但我仍然看到管理员注册表中的用户名字段和用户列表中的用户名字段(没有用户名的用户为空)。
我怎样才能删除它?
我有一个用于测试 Django 的开发环境。我正在“本地”安装中运行 Python 3.5.2 pyenv。我有 Django 1.10.2。我allauth昨天发现了注册插件并一直在使用它,但遇到了障碍。
我的网站是“dev.my.domain.com”。目的是本网站的生产版本不会有任何“公开”信息。生产版本的名称类似于:“members.my.domain.com”。所以,我想知道“allauth”插件是否可以让所有非/adomn 入站请求检查身份验证?
因此,请求:
应该全部检查身份验证。如果不存在,那么我假设“allauth”将重定向到登录/注册页面。
我尝试将Members/urls.py文件设置为:
from django.conf.urls import include, url
from django.contrib import admin
urlpatterns = [
url(r'^$', include('allauth.urls')),
url(r'^admin/', admin.site.urls),
]
Run Code Online (Sandbox Code Playgroud)
但会出现“找不到页面”错误和DEBUG消息:
Using the URLconf defined in Members.urls, Django tried these URL patterns, in this order:
^$ ^ ^signup/$ [name='account_signup']
^$ ^ ^login/$ [name='account_login']
^$ ^ ^logout/$ [name='account_logout']
^$ ^ ^password/change/$ [name='account_change_password']
^$ ^ ^password/set/$ [name='account_set_password']
^$ ^ ^inactive/$ [name='account_inactive']
^$ …Run Code Online (Sandbox Code Playgroud) 我将 Django 2.0.10 与 rest-framework、rest-auth 和 allauth 一起使用。我有一个自定义用户模型。
我使用 allauth 视图进行了电子邮件验证。当用户注册时发送验证电子邮件。如果我单击电子邮件中的链接,我将被带到一个页面,其中有一个按钮可以单击以验证电子邮件。这一切都没有错误。但是我无法找出是什么这实际上呢。用户数据中的字段似乎没有改变。
我想要的行为是让用户能够注册和登录,但只能在他们验证电子邮件后才能向网站添加内容。
编辑:这篇文章给出了部分答案,但没有说明如何将验证状态保存为用户的属性,以便您在加载用户数据时可以在前端进行检查。
设置.py
# django rest auth
ACCOUNT_AUTHENTICATION_METHOD = 'email'
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_USERNAME_REQUIRED = False
OLD_PASSWORD_FIELD_ENABLED = True
LOGOUT_ON_PASSWORD_CHANGE = False
ACCOUNT_EMAIL_VERIFICATION = 'optional'
Run Code Online (Sandbox Code Playgroud)
api/urls.py
from allauth.account.views import confirm_email
urlpatterns = [
re_path(r'^rest-auth/registration/account-confirm-email/(?P<key>[-:\w]+)/$', confirm_email,
name='account_confirm_email'),
...
]
Run Code Online (Sandbox Code Playgroud)
用户/模型.py
import uuid
from django.contrib.auth.models import AbstractUser, UserManager
from django.db import models
from django.utils.http import int_to_base36
class CustomUserManager(UserManager):
def get_by_natural_key(self, username):
case_insensitive_username_field = '{}__iexact'.format(self.model.USERNAME_FIELD)
return self.get(**{case_insensitive_username_field: username}) …Run Code Online (Sandbox Code Playgroud) 我正在为我的 Django 应用程序使用 Google OAuth(通过 allauth 包)
我已遵循所有标准配置步骤。在 Google 开发者控制台中,这是我所拥有的:
授权的 JavaScript 起源
https://example.com
Run Code Online (Sandbox Code Playgroud)
授权的重定向 URI
https://example.com/accounts/google/login/callback/ - login fails
http://example.com/accounts/google/login/callback/ - login succeeds
Run Code Online (Sandbox Code Playgroud)
我观察到,如果我在授权的重定向 URI 中有一个https重定向 URL,它不允许登录,并且会因redirect_uri_mismatch错误而失败。如果我有一个http重定向 URL,则登录成功。
我需要做什么才能启用 https 重定向 URL?
我正在使用 django-allauth 对用户进行身份验证(使用Patreon 的 API v1),它将一个 json 添加到数据库中,其中包含以下信息。如果用户的承诺与特定层级(或高于一层)相匹配,我想在网站上显示额外的内容。
{
"attributes": {
"about": null,
"can_see_nsfw": true,
"created": "2019-05-20T20:29:02.000+00:00",
"default_country_code": null,
"discord_id": null,
"email": "admin@email.com",
"facebook": null,
"facebook_id": null,
"first_name": "Adm",
"full_name": "Adm Nsm",
"gender": 0,
"has_password": true,
"image_url": "https://c8.patreon.com/2/200/21383296",
"is_deleted": false,
"is_email_verified": false,
"is_nuked": false,
"is_suspended": false,
"last_name": "Nsm",
"social_connections": {
"deviantart": null,
"discord": null,
"facebook": null,
"instagram": null,
"reddit": null,
"spotify": null,
"twitch": null,
"twitter": null,
"youtube": null
},
"thumb_url": "https://c8.patreon.com/2/200/21383296",
"twitch": null,
"twitter": null,
"url": "https://www.patreon.com/user?u=21383296",
"vanity": …Run Code Online (Sandbox Code Playgroud) 我正在尝试为 Flutter 应用程序创建一个身份验证 API,该应用程序将使用谷歌身份验证注册/登录表单登录用户。我按照本教程来实现这一点。
到目前为止一切顺利,只是本教程基于 GitHub 登录而不是 Google。我设法让它一直工作到“连接”步骤。我能够code从重定向中获取 ,但是当我访问时,http://127.0.0.1:8000/auth/google/我看到它要求两个字段 ( access_token, code)。当我尝试只发布信息时,我收到以下错误:
"non_field_errors": [
"View is not defined, pass it as a context variable"
]
Run Code Online (Sandbox Code Playgroud)
django python-3.x django-rest-framework django-allauth django-rest-auth