Объединение учетной записи с входом в Google и обычной регистрациейPython

Программы на Python
Ответить
Anonymous
 Объединение учетной записи с входом в Google и обычной регистрацией

Сообщение Anonymous »

В моем проекте Django у меня есть как обычная регистрация, так и вход в Google. Если пользователь регистрируется обычным образом и предоставляет свой адрес электронной почты, а затем пытается войти в систему Google, используя тот же адрес электронной почты, появляется классический экран входа в систему. Я хочу следующее: если пользователь сначала входит в систему с помощью Google, а затем пытается войти в систему с тем же адресом электронной почты посредством обычной регистрации, или если он регистрируется нормально, а затем пытается войти в систему с помощью Google, используя тот же адрес электронной почты, мне нужны оба метода. вести на тот же аккаунт. Другими словами, независимо от того, входят ли они в систему с помощью Google или обычной регистрации, информация пользователя должна быть объединена, и в обоих случаях они должны получить доступ к одной и той же учетной записи.
разделы входа в социальные сети в настройках. пы:

Код: Выделить всё

SOCIAL_AUTH_GOOGLE_OAUTH2_KEY = ''
SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET = ''
SOCIALACCOUNT_LOGIN_ON_GET=True
ACCOUNT_UNIQUE_EMAIL = True
EMAIL_VERIFICATION_METHOD = 'email'

# settings.py
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587 # TLS GENELLİKLE 587 PORTUNU KULLANIR SSL İSE GENELLİKLE 465 PORTUNU KULLANIR
EMAIL_USE_TLS = True  # TLS SSL'E GÖRE DAHA MODERN VE GÜVENLİDİR
EMAIL_HOST_USER = ''
EMAIL_HOST_PASSWORD = ''
views.py:

Код: Выделить всё

def loginUser(request):

if (request.user.is_authenticated):
messages.error(request,"Giriş Yapılıyken Giriş Yapamazsın!")
return redirect("index")

form = LoginForm(request.POST or None)
if (form.is_valid()):
login(request,form.cleaned_data["user"])
messages.success(request,"Başarıyla Giriş Yaptın!")
return redirect("index")

return render(request,"login.html",{"form":form})

def register(request):

if (request.user.is_authenticated):
messages.error(request,"Giriş Yapılıyken Kayıt Olamazsın!")
return redirect("index")
form = RegisterForm(request.POST or None)

if (form.is_valid()):
username = form.cleaned_data["username"]
password = form.cleaned_data["password"]
email = form.cleaned_data["email"]
newUser = User(username=username,email=email)
newUser.is_active = False

newUser.set_password(password)
newUser.backend = "django.contrib.auth.backends.ModelBackend"
newUser.save()
send_verification_mail(request,newUser)
newUser_profile = Profile(user=newUser,profile_photo="profile_photo/default/default.jpg")
newUser_profile.save()
messages.success(request,"Hesabınız Oluşturuldu Hesabınızı Aktif Etmek İçin Mail Kutunuzu Kontrol Edin")
return redirect("index")
return render(request,"register.html",{"form":form})

def send_verification_mail(request,user):
current_site = get_current_site(request) # Bu sitenin bilgilerini alır
subject = "Email Dogrulama"
message = render_to_string("email/email_verification.html",{ # render_to_string, bir Django şablonunu işleyip dönen sonucu bir string (metin) olarak döndürür./NORMAL RENDER İSE, bir Django şablonunu işleyip bir HttpResponse nesnesi döndürür.  Bu, işlenmiş şablonu bir HTTP yanıtı olarak tarayıcıya göndermek için kullanılır.
'user': user,
'domain': current_site.domain, # Yukarıda aldığımız bu sitenin domaini
'uid': urlsafe_base64_encode(force_bytes(int(user.pk))), # user objesinin id'sini byte veri tipine çevirip url için güvenli ve uygun olarak base64 olarak tekrar kodlar
'token': default_token_generator.make_token(user), # user objesine özel token oluşturur
})

email = EmailMessage(
subject=subject,
body=message,
from_email="sefasteam435@gmail.com",
to=[user.email],
)
email.content_subtype = "html" # Email içeriğinin türünü html yaptık

email.send(fail_silently=False)

def verify_email(request, uidb64, token):
try:
uid = urlsafe_base64_decode(uidb64).decode()
user = get_object_or_404(User, pk=uid)
except (TypeError, ValueError, OverflowError, User.DoesNotExist) as e:
user = None

if user and default_token_generator.check_token(user, token):
user.is_active = True
user.save()
messages.success(request, 'E-posta doğrulamanız başarılı. Artık giriş yapabilirsiniz.')
return redirect('user:login')
else:
messages.error(request, 'Geçersiz doğrulama bağlantısı.')
return redirect('user:register')

Я ничего не мог сделать сам, я исследовал это, но не смог найти то, что искал.
Примечание: я Я новичок в StackOverflow, простите меня, если я допустил ошибку, задавая свой вопрос.

Подробнее здесь: https://stackoverflow.com/questions/793 ... gistration
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»