bradtraversy / storybooks

Node.js app with Google OAuth
MIT License
569 stars 891 forks source link

Oauth error when deploying to heroku #35

Open f-llewellyn opened 3 years ago

f-llewellyn commented 3 years ago

How to reproduce

I'm attempting to deploy this application to heroku. I have successfully deployed the application to heroku and added the redirectURI to my google cloud environment.

My problem

When it comes to logging in through Oauth, I receive the error "Error 400: redirect_uri_mismatch". This is because heroku listens for an HTTP request and not an HTTPS request, and google requires HTTPS when in production.

image

Steps taken so far

I have changed the callbackURI in /config/passport.js to force HTTP when in production, and changed proxy to true:

passport.js

const GoogleStrategy = require("passport-google-oauth20").Strategy
const mongoose = require("mongoose")
const User = require("../models/User")

module.exports = function (passport) {
    if (process.env.NODE_ENV === "development") {
        passport.use(new GoogleStrategy({
            clientID: process.env.GOOGLE_CLIENT_ID,
            clientSecret: process.env.GOOGLE_CLIENT_SECRET,
            callbackURL: "http://localhost:3000/auth/google/callback",
            proxy: true
        },
            // original params
    } else {
        passport.use(new GoogleStrategy({
            clientID: process.env.GOOGLE_CLIENT_ID,
            clientSecret: process.env.GOOGLE_CLIENT_SECRET,
            callbackURL: "http://polar-forest-68113.herokuapp.com/auth/google/callback",
            proxy: true
        },
            // original params
}

Just wondering if anyone could help me with this, cheers 😁

techysiddhant commented 2 years ago

You just need to past the redirect_URI into the google OAuth

uri oauth