rsnext/examples/with-firebase-authentication
Shu Uesugi 5f041447bc
Remove Now CLI reference from examples (#10501)
* Find/Replace "Deploy it to the cloud..."

* Find/Replace "Deploy it to the cloud..." (no colon)

* Find/Replace "Deploy it to the cloud..." for firebase

* Convert remaining ones

* Storybook deployment

* Update with-stripe-typescript

* Update contributing.md

* Remove `now`

* Update examples/with-stripe-typescript/README.md

Co-Authored-By: Luis Alvarez D. <luis@zeit.co>
2020-02-12 17:14:57 -05:00
..
credentials Improve linting rules to catch more errors (#9374) 2019-11-10 19:24:53 -08:00
pages Improve linting rules to catch more errors (#9374) 2019-11-10 19:24:53 -08:00
sessions Update example with firebase auth (#8127) 2019-07-26 12:14:14 -05:00
package.json chore(examples): Update firebase version (#10145) 2020-01-17 23:06:58 +01:00
README.md Remove Now CLI reference from examples (#10501) 2020-02-12 17:14:57 -05:00
server.js Update server.js (#10056) 2020-01-13 12:17:06 +01:00

With Firebase Authentication example

The goal is to authenticate users with firebase and store their auth token in sessions. A logged in user will see their messages on page load and then be able to post new messages.

How to use

Using create-next-app

Execute create-next-app with npm or Yarn to bootstrap the example:

npm init next-app --example with-firebase-authentication with-firebase-authentication-app
# or
yarn create next-app --example with-firebase-authentication with-firebase-authentication-app

Download manually

Download the example:

curl https://codeload.github.com/zeit/next.js/tar.gz/canary | tar -xz --strip=2 next.js-canary/examples/with-firebase-authentication
cd with-firebase-authentication

Set up firebase:

  • Create a project at the Firebase console.
  • Get your account credentials from the Firebase console at project settings>service accounts, where you can click on generate new private key and download the credentials as a json file. It will contain keys such as project_id, client_email and client_id. Now copy them into your project in the credentials/server.js file.
  • Get your authentication credentials from the Firebase console under project settings>general>your apps Add a new web app if you don't already have one. Under Firebase SDK snippet choose Config to get the configuration as JSON. It will include keys like apiKey, authDomain and databaseUrl and it goes into your project in credentials/client.js.
  • Back at the Firebase web console, go to Authentication>Sign-in method and enable Google.
  • Create a database in the "Database" tab and select Firestore. Then go to "rules" and set up your write, read rules to this:
// Allow read/write access on all documents to any user signed in to the application
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if request.auth.uid != null;
    }
  }
}

Install it and run:

npm install
npm run dev
# or
yarn
yarn dev

Deploy it to the cloud with ZEIT Now (Documentation).

After deploying, copy the deployment URL and navigate to your Firebase project's Authentication tab. Scroll down in the page to "Authorized domains" and add that URL to the list.