Skip to content
Passport strategy for Sign in with Apple
JavaScript
Branch: master
Clone or download
Latest commit 6ec281a Nov 5, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src Fix error handling when client secret generation fails Aug 7, 2019
.gitignore Initial test Jun 14, 2019
README.md Update README.md Nov 5, 2019
package-lock.json Added passport Jun 11, 2019
package.json First release Jun 14, 2019

README.md

 Sign in with Apple for Passport.js

Follow @ananayarora

Passport strategy for the new Sign in with Apple feature!

Installation

Install the package via npm / yarn: npm install --save passport-apple

Next, you need to configure your Apple Developer Account with Sign in with Apple.

Steps for that are given here: https://github.com/ananay/apple-auth/blob/master/SETUP.md

Example

Live on https://passport-apple.ananay.dev

Example repo: https://github.com/ananay/passport-apple-example

Usage

Initialize the strategy as follows:

const AppleStrategy = require('passport-apple');
passport.use(new AppleStrategy({
    clientID: "",
    teamID: "",
    callbackURL: "",
    keyID: "",
    privateKeyLocation: ""
}, function(accessToken, refreshToken, idToken, profile, cb) {
    // Here, check if the idToken exists in your database!
    cb(null, idToken);
}));

Add the login route: app.get("/login", passport.authenticate('apple'));

Finally, add the callback route and handle the response:

app.get("/auth", function(req, res, next) {
    passport.authenticate('apple', function(err, user, info) {
        if (err) {
            if (err == "AuthorizationError") {
                res.send("Oops! Looks like you didn't allow the app to proceed. Please sign in again! <br /> \
                <a href=\"/login\">Sign in with Apple</a>");
            } else if (err == "TokenError") {
                res.send("Oops! Couldn't get a valid token from Apple's servers! <br /> \
                <a href=\"/login\">Sign in with Apple</a>");
            }
        } else {
            res.send("Unique user ID: - " + user);
        }
    })(req, res, next);
});

Other Sign in with Apple repos

Check out my other sign in with Apple Repos here. More coming soon!

apple-auth:

https://github.com/ananay/apple-auth
https://npmjs.com/package/apple-auth

Questions / Contributing

Feel free to open issues and pull requests. If you would like to be one of the core creators of this library, please reach out to me at i@ananayarora.com or message me on twitter @ananayarora!

Created with ❤️ by Ananay Arora

You can’t perform that action at this time.