DEV Community

Cover image for adding Google login to your React app
khaled-17
khaled-17

Posted on

7

adding Google login to your React app

The guide to adding Google login to your React app
How To Integrate Google Login in React by Easy way

we use

npm install @react-oauth/google

Enter fullscreen mode Exit fullscreen mode

for Axios and google icon

npm install axios react-icons

Enter fullscreen mode Exit fullscreen mode

you can visit documentation from here but

step 1 :

Get your Google API client ID
Key Point: Add both http://localhost and http://localhost:<port_number> to the Authorized JavaScript origins box for local tests or development.

and

Configure your OAuth Consent Screen

step 2 :

in main.js or app.js
Wrap your application with GoogleOAuthProvider

import React from 'react'
import ReactDOM from 'react-dom/client'
import App from './App.jsx'
 import { GoogleOAuthProvider } from '@react-oauth/google';

ReactDOM.createRoot(document.getElementById('root')).render(
  <React.StrictMode>

 <GoogleOAuthProvider clientId={'9r8f39.apps.googleusercontent.com'}>
      <App />
    </GoogleOAuthProvider>

  </React.StrictMode>,
)

Enter fullscreen mode Exit fullscreen mode

step 3 :

let's make reusable components 😎😎

its be look this

Image description

import React,{useState,useEffect} from 'react'

import { FcGoogle } from "react-icons/fc";

import { useGoogleLogin } from "@react-oauth/google";
import axios from "axios";

const LoginByGoogle = () => {

  const [user, setUser] = useState([]);
  const [userProfile, setUserProfile] = useState([]);

  const handlLogin = useGoogleLogin({
    onSuccess: (GoogleResponse) => {

      setUser(GoogleResponse)
       console.log('-----GoogleResponse-----');
       console.log(GoogleResponse);


    },
    onError: (error) => console.log("Login Failed:", error)
  });

  useEffect(() => {
    if (user) {
      axios
        .get(
          `https://www.googleapis.com/oauth2/v1/userinfo?access_token=${user.access_token}`,
          {
            headers: {
              Authorization: `Bearer ${user.access_token}`,
              Accept: "application/json",
            },
          }
        )
        .then((res) => {


            console.log('---- UserProfile-------');
            console.log(res.data);
            setUserProfile(res.data);
        })
        .catch((err) => console.log(err));
    }
  }, [user]);

  return (
          <div className="shadow-2xl">
            <button
              type="button"
               style={{
                backgroundColor: 'white',
                color: 'black',
                padding: '0.75rem 1.5rem',
                borderRadius: '0.5rem',
                cursor: 'pointer',
                outline: 'none',
                display: 'flex',
                justifyContent: 'center',
                alignItems: 'center',
                border: 'none',

              }}

              onClick={handlLogin}
            >
              <FcGoogle style={{marginRight:'14px'}} />
              Sign in with Google
            </button>
          </div>
  );
};

export default LoginByGoogle;
Enter fullscreen mode Exit fullscreen mode

we get it in console


-----GoogleResponse-----


{
    "access_token": "ya29.a0AfB_byCwd9",
    "token_type": "Bearer",
    "expires_in": 39,
    "scope": "email sdfsf",
    "authuser": "10",
    "prompt": "none"
}

---- UserProfile-------

{
    "id": "100971739391261646651",
    "email": "kh@gmail.com",
    "verified_email": true,
    "name": "k",
    "given_name": "kh",
    "family_name": "m",
    "picture": "https://lh3.google ": "dg"
}

Enter fullscreen mode Exit fullscreen mode

_**

now you can add data profile in local storage
or database
**_

SurveyJS custom survey software

Simplify data collection in your JS app with a fully integrated form management platform. Includes support for custom question types, skip logic, integrated CCS editor, PDF export, real-time analytics & more. Integrates with any backend system, giving you full control over your data and no user limits.

Learn more

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

πŸ‘‹ Kindness is contagious

Please leave a ❀️ or a friendly comment on this post if you found it helpful!

Okay