Skip to content
Passport strategy for Sign in with Apple
Branch: master
Clone or download
Latest commit 6ec281a Nov 5, 2019
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 Update Nov 5, 2019
package-lock.json Added passport Jun 11, 2019
package.json First release Jun 14, 2019

 Sign in with Apple for Passport.js

Follow @ananayarora

Passport strategy for the new Sign in with Apple feature!


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:


Live on

Example repo:


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!


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 or message me on twitter @ananayarora!

Created with ❤️ by Ananay Arora

You can’t perform that action at this time.