Node-1st-gen/spotify-auth/README.md
This sample shows how to authenticate using Spotify Sign-In on Firebase. In this sample we use OAuth 2.0 based authentication to get Spotify user information then create a Firebase Custom Token (using the Spotify user ID).
Create and setup the Firebase project:
Create and provide a Service Account's credentials:
./functions/service-account.jsonCreate and setup your Spotify app:
Create a Spotify app in the Spotify Developers website.
Add the URL https://<application-id>.firebaseapp.com/popup.html to the
Redirect URIs of your Spotify app.
Copy the Client ID and Client Secret of your Spotify app and use them to set the spotify.client_id and spotify.client_secret Google Cloud environment variables. For this use:
firebase functions:secrets:set SPOTIFY_CLIENT_ID
firebase functions:secrets:set SPOTIFY_CLIENT_SECRET
Make sure the Spotify Client Secret is always kept secret. For instance do not save this in your version control system.
Deploy your project:
firebase use --add and choose your Firebase project. This will configure the Firebase CLI to use the correct project locally.firebase deploy to effectively deploy the sample. The first time the Functions are deployed the process can take several minutes.Open the sample's website by using firebase open hosting:site or directly accessing https://<project-id>.firebaseapp.com/.
Click on the Sign in with Spotify button and a popup window will appear that will show the Spotify authentication consent screen. Sign In and/or authorize the authentication request.
The website should display your display name, email and profile pic from Spotify. At this point you are authenticated in Firebase and can use the database/hosting etc...
When clicking the Sign in with Spotify button a popup is shown which redirects users to the redirect Function URL.
The redirect Function then redirects the user to the Spotify OAuth 2.0 consent screen where (the first time only) the user will have to grant approval. Also the state cookie is set on the client with the value of the state URL query parameter to check against later on.
After the user has granted approval he is redirected back to the ./popup.html page along with an OAuth 2.0 Auth Code as a URL parameter. This Auth code is then sent to the token Function using a JSONP Request. The token function then:
state URL query parameter is the same as the one in the state cookie../popup.html page.The ./popup.html receives the Custom Auth Token and other data back from the AJAX request to the token Function and uses it to update the user's profile, saves the access token to the database, authenticate the user in Firebase and then close the popup.
At this point the main page will detect the sign-in through the Firebase Auth State observer and display the signed-In user information.