Skip to main content

A configurable Django Allauth provider for Vipps Login.

Project description

Django Allauth Vipps Provider

PyPI version License: MIT CI/CD Tests

A complete django-allauth provider for Vipps Login, supporting both traditional web and modern API (dj-rest-auth) authentication flows.

This package provides a configurable, reusable Django app that allows users to sign in to your project using their Vipps account, making it easy to integrate Norway's most popular payment and identity solution.

Features

  • Integrates seamlessly with django-allauth's social account framework.
  • Supports API-first authentication flows via dj-rest-auth.
  • Configurable for both Vipps Test and Production environments via standard settings.
  • Correctly handles Vipps' required client_secret_basic authentication method for REST APIs.
  • Fully tested and documented for a "drop-in" experience.

1. Installation & Setup

Step 1: Install the Package

pip install django-allauth-vipps

(Or poetry add django-allauth-vipps if you use Poetry)

Step 2: Update INSTALLED_APPS

Add vipps_auth to your INSTALLED_APPS in your Django settings.py.

# settings.py

INSTALLED_APPS = [
    # ...
    'allauth',
    'allauth.account',
    'allauth.socialaccount',
    'vipps_auth',
]

SITE_ID = 1
AUTHENTICATION_BACKENDS = [
    'django.contrib.auth.backends.ModelBackend',
    'allauth.account.auth_backends.AuthenticationBackend',
]

Step 3: Configure the Provider

Configure the provider using django-allauth's standard SOCIALACCOUNT_PROVIDERS setting in your settings.py.

# settings.py
import os

SOCIALACCOUNT_PROVIDERS = {
    'vipps': {
        # Configure credentials using environment variables.
        'APPS': [
            {
                'client_id': os.getenv('VIPPS_CLIENT_ID'),
                'secret': os.getenv('VIPPS_CLIENT_SECRET'),
                'key': ''
            }
        ],

        # --- General Provider Settings ---
        'TEST_MODE': False, # Set to True for development/testing
        'VERIFIED_EMAIL': True,
        'EMAIL_VERIFIED_REQUIRED': True,
        'SCOPE': [
            'openid',
            'name',
            'email',
            'phoneNumber',
        ],
    }
}

Important: For credentials, either use the APPS key in settings.py (recommended) or create a SocialApp in the Django Admin. Using both for the same provider will cause an error.

Step 4: Configure on Vipps Developer Portal

  1. Log in to the Vipps MobilePay Developer Portal.
  2. Get your Client ID and Client Secret.
  3. Set the Token endpoint authentication method to client_secret_basic.
  4. Add your Redirect URI (https://yourdomain.com/accounts/vipps/login/callback/ for web flows, or your frontend URL for API flows).

Step 5: Run Migrations

python manage.py migrate

2. Usage

For Traditional Django Websites

Use the provider_login_url template tag.

{% load socialaccount %}
<a href="{% provider_login_url 'vipps' %}">Log In with Vipps</a>

For REST APIs (with dj-rest-auth)

When using dj-rest-auth, you must use the custom VippsOAuth2Client provided by this package to ensure the correct authentication method (client_secret_basic) is used.

In your project's urls.py, create your login view like this:

# your_project/urls.py
from django.urls import path
from dj_rest_auth.registration.views import SocialLoginView
from vipps_auth.views import VippsOAuth2Adapter
from vipps_auth.client import VippsOAuth2Client # <-- Import the custom client

# This view connects dj-rest-auth to our Vipps adapter
class VippsLoginAPI(SocialLoginView):
    adapter_class = VippsOAuth2Adapter
    client_class = VippsOAuth2Client  # <-- Use the custom client here
    callback_url = "YOUR_FRONTEND_CALLBACK_URL" 

urlpatterns = [
    # ... your other urls
    path("api/v1/auth/vipps/", VippsLoginAPI.as_view(), name="vipps_login_api"),
]

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django_allauth_vipps-0.2.2.tar.gz (5.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_allauth_vipps-0.2.2-py3-none-any.whl (7.0 kB view details)

Uploaded Python 3

File details

Details for the file django_allauth_vipps-0.2.2.tar.gz.

File metadata

  • Download URL: django_allauth_vipps-0.2.2.tar.gz
  • Upload date:
  • Size: 5.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.6.1 CPython/3.11.6 Linux/5.4.0-204-generic

File hashes

Hashes for django_allauth_vipps-0.2.2.tar.gz
Algorithm Hash digest
SHA256 64c244f53a4a43b7d9294ecfc2c7ab8d181a459271d36ef44f342faf274a5cd6
MD5 38cf7a0e5b8763e0ba36846278c8bd8a
BLAKE2b-256 8801e10e220440658126563bfc3c55410078c45b0245deb8f3af32ec49b1a05b

See more details on using hashes here.

File details

Details for the file django_allauth_vipps-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: django_allauth_vipps-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 7.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.6.1 CPython/3.11.6 Linux/5.4.0-204-generic

File hashes

Hashes for django_allauth_vipps-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 c56e900776521841b3f688783dc98ffa8aceaa04536d31007406406ef1a3933a
MD5 18f0d2e7e49ba9c2996a493c065fb79c
BLAKE2b-256 715ea9ded27f8024a3f2b4f6a0daa56d4bd78f5801adb90b27024ffd2e9b5384

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page