Реализуется в коде элементарно при помощи пакета django-allauth. У самого пакета документация не очень подробная, но в сети полно альтернативных описаний, как с ним работать (на английском). Да в принципе, там и код не особо сложный, я его вместо документации читаю, когда надо что-то сделать, а как — не помню.