Я нашел удобный способ аутентификации Microsoft. Я использовал График Microsoft . Есть хорошо написанная документация для Microsoft Graph. Вы можете обратиться к этому здесь . Вы можете игнорировать календарную часть, если вас интересует только аутентификационная часть.
Сначала вам нужно пройтись по данному учебнику, затем вы легко поймете код, приведенный ниже.
В данном уроке они аутентифицируют пользователя, используя сеансы. Я считаю, что аутентификация Django удобнее, поэтому я просто отредактировал функцию обратного вызова и выхода из системы, как указано ниже.
Здесь я пишу только функцию обратного вызова и выхода из системы.
Как решена моя проблема: теперь я могу просто изменить URL для входа в файл urls.py. Если я хочу установить кнопку со страницей входа, я могу просто использовать элемент привязки, ссылающийся на URL входа.
def callback(request):
# Get the state saved in session
expected_state = request.session.pop('auth_state', '')
# Make the token request
token = get_token_from_code(request.get_full_path(), expected_state)
# Get the user's profile
user = get_user(token)
# Get user info
# user attribute like displayName,surname,mail etc. are defined by the
# institute incase you are using single-tenant. You can get these
# attribute by exploring Microsoft graph-explorer.
username = user['displayName']
password = user['surname']
email = user['mail']
try:
# if use already exist
user = User.objects.get(username=username)
except User.DoesNotExist:
# if user does not exist then create a new user
user = User.objects.create_user(username,email,password)
user.save()
user = authenticate(username=username,password=password)
if user is not None:
login(request,user)
messages.success(request,"Success: You were successfully logged in.")
return redirect('home')
return redirect('home')
def sign_out(request):
logout(request)
messages.success(request, "Successfully Logged Out")
return redirect('home')