SimpleLogin


<button onclick="simpleLogin()">
    Login with SimpleLogin
</button>
<!-- Include SimpleLogin JS SDK -->
<script src="https://simplelogin.io/sdk/sdk.js"></script>
                    

SL.init("quickstart"); // Your SimpleLogin AppID
function simpleLogin() {
    SL.login(function(user){
        // This is where you log user in :)
        console.log("SimpleLogin user", user);
    });
}
                    

import requests_oauthlib, os
# Your SimpleLogin AppID, AppSecret
CLIENT_ID = os.environ.get("CLIENT_ID")
CLIENT_SECRET = os.environ.get("CLIENT_SECRET")
@app.route("/login")
def login():
    sl = requests_oauthlib.OAuth2Session(
        CLIENT_ID,
        redirect_uri="http://localhost:5000/callback"
    )
    redirect_url, _ = sl.authorization_url(
        "https://app.simplelogin.io/oauth2/authorize"
    )
    return flask.redirect(redirect_url)
@app.route("/callback")
def callback():
    sl = requests_oauthlib.OAuth2Session(CLIENT_ID)
    sl.fetch_token(
        "https://app.simplelogin.io/oauth2/token",
        client_secret=CLIENT_SECRET,
        authorization_response=flask.request.url
    )
    user_info = sl.get("https://app.simplelogin.io/oauth2/userinfo").json()
    print(user_info["email"], user_info["name"], user_info["avatar_url"])
    return "Welcome " + user_info["name"]
                    

# Based on social-auth-app-django library
pip install git+ssh://git@github.com/simple-login/social-core.git@sl
                    

# settings.py
AUTHENTICATION_BACKENDS = [
    'social_core.backends.simplelogin.SimpleLoginOAuth2',
    'django.contrib.auth.backends.ModelBackend',
]
SOCIAL_AUTH_SIMPLELOGIN_KEY = 'YOUR_APP_ID'
SOCIAL_AUTH_SIMPLELOGIN_SECRET = 'YOUR_APP_SECRET'
                    

<!-- In your login template -->
<a href="{% url 'social:begin' 'simplelogin' %}">Login with SimpleLogin</a>
                    

                            // config SimpleLogin OIDC
passport.use('SimpleLogin', new OidcStrategy({
    issuer: 'https://app.simplelogin.io',
    authorizationURL: 'https://app.simplelogin.io/oauth2/authorize',
    tokenURL: 'https://app.simplelogin.io/oauth2/token',
    userInfoURL: 'https://app.simplelogin.io/oauth2/userinfo',
    clientID: process.env.CLIENT_ID, // SimpleLogin AppId
    clientSecret: process.env.CLIENT_SECRET, // SimpleLogin AppSecret
    callbackURL: process.env.URL + '/authorization-code/callback',
    scope: 'openid profile'
}, (issuer, sub, profile, accessToken, refreshToken, done) => {
    return done(null, profile);
}));
// show user info
app.use('/profile', (req, res) => {
    console.log("user:", req);
    res.render('profile', {
        title: 'User Info',
        user: req.user._json
    });
});
                    

Coming soon...

Coming soon...

Read the original on simplelogin.io ↗