In this tutorial “Login with Google Account Using PHP” we are going to learn about setting up an authentication system for your custom web application using Google OAuth PHP and save the data into MySQL database. Today social login has become most important part of a web application for login and registration process. Today most of the website using this feature. It is not only about the login and registration. Because it only allows the genuine user which verified by the google so there is no any chance for spam. PHP Google OAuth API allows users to log in to a website with their Google credentials. And give permission to access basic profile which is a name with email will be stored in the database.
Implementing Google Login system in any website is really very easy, the Google API Client Library help and enables us to work with many Google services like Google+, Google Drive, YouTube etc.
Table of Contents
What is OAuth?
An OAuth server 2.0 implementation with authorization code flow consists of two endpoints, which our service makes available by HTTPS. The 1st endpoint is authorization endpoint, which is responsible for finding consent from users for data access. Authorization endpoint presents sign-in UI to our users that aren’t already login and records consent to requested access. The 2nd endpoint is token exchange endpoint, which is used to exchange the encrypted strings called tokens for different types of tokens. These tokens are passed to our service to access content.
Google OAuth API provides a simple and powerful way to integrate login system in our website. The web developers can easily implement login and registration system in any web application using Google OAuth 2.0. Google login system also helps to increase subscribers on your website.
In this tutorial, we’ll provide the step-by-step guide to implementing login with Google account using PHP and store the user information in the MySQL database.
Login and Process Page
To design our google login button we firstly need client id, the secret key from Google API, go to Google API console, create an OAuth client for Web Application, next you will be presented with your Client ID and Secret, which will be required in the code below.
Follow The below steps
To get your client id
the secret key
Step-1
Open Google API console and click to select a product option.
Step-2
Create a new project so enter your project name and clicks to create.
Step-3
Now select your project and click to open.
Step-4
Clicks to credential option to create the client id and security key.
Step-5
Now submit your details for OAuth consent Screen to create credential.
Step-6
Click on OAuth client ID
Step-7
Click to web application then fill all details and click to create
Step-8
Now you will get your client id and client secret key
Creating Our Database
Firstly, we have to create a database to store the data, for creating database follow these steps:
- Open phpMyAdmin
- Select database icon and Create a new database with the name after that.
- Create the table with the table name.
- And then insert the details Or
- After creating a database name, click the SQL and paste the following code.
Create Table
CREATE TABLE `google_users` ( `google_id` int(12) NOT NULL, `clint_id` varchar(255) NOT NULL, `name` varchar(255) NOT NULL, `last_name` varchar(255) NOT NULL, `google_email` varchar(60) NOT NULL, `gender` varchar(255) NOT NULL, `picture_link` varchar(255) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Connection Page
This is a connection page, mysqli_connect() function opens connection to the MySQL server .
config.php
<?php session_start(); require_once "googleapi/vendor/autoload.php"; $gClient = new Google_Client(); $gClient->setClientId("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); $gClient->setClientSecret("xxxxxxxxxxxxxxxxxxxxxx"); $gClient->setApplicationName("techjunkgigs"); $gClient->setRedirectUri("http://localhost/login/g-callback.php"); $gClient->addScope("https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/userinfo.email"); $con = new mysqli('localhost', 'root','' ,'table'); if ($con->connect_error) { die("Connection failed: " . $con->connect_error); } ?>
Here you have to enter your own client id, client secret key, and other details.
Login Page
login.php
<?php require_once "config.php"; if (isset($_SESSION['access_token'])) { header('Location: index.php'); exit(); } $loginURL = $gClient->createAuthUrl(); ?> <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0,"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Login</title> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.3/css/bootstrap.min.css" integrity="sha384-Zug+QiDoJOrZ5t4lssLdxGhVrurbmBWopoEl+M6BdEfwnCJZtKxi1KgxUyJq13dy" crossorigin="anonymous"> </head> <body> <div class="container" style="margin-top: 100px"> <div class="row justify-content-center"> <div class="col-md-6 col-offset-2" align="center"> <h1>TechJunkGigs</h1> <h4>Login With Gmail</h4></br></br> <form> <input type="text" placeholder="Email" name="email" class="form-control"><br> <input type="password" placeholder="Password" name="password" class="form-control"><br> <input type="button" onclick="window.location = '<?php echo $loginURL ?>';" name="google" value="Login with Google" class="btn btn-primary"> <input type="reset" name="submit" value="Clear" class="btn btn-primary"> </form> </div> </div> </div> </body> </html>
Logic page
g-callback.php
<?php require_once "config.php"; if (isset($_SESSION['access_token'])) $gClient->setAccessToken($_SESSION['access_token']); else if (isset($_GET['code'])) { $token = $gClient->fetchAccessTokenWithAuthCode($_GET['code']); $_SESSION['access_token'] = $token; } else { header('Location: login.php'); exit(); } $oAuth = new Google_Service_Oauth2($gClient); $userData = $oAuth->userinfo_v2_me->get(); $_SESSION['id'] = $userData['id']; $_SESSION['email'] = $userData['email']; $_SESSION['gender'] = $userData['gender']; $_SESSION['picture'] = $userData['picture']; $_SESSION['familyName'] = $userData['familyName']; $_SESSION['givenName'] = $userData['givenName']; $sql="insert into google_users (clint_id,name,last_name,google_email,gender,picture_link) values ('".$userData['id']."','".$userData['givenName']."','".$userData['familyName']."','".$userData['email']."', '".$userData['gender']."','".$userData['picture']."')"; mysqli_query($con,$sql); header('Location: index.php'); exit(); ?>
Mian Screen
Create a PHP file named “index.php” and paste the following code inside of it.
<?php session_start(); if (!isset($_SESSION['access_token'])) { header('Location: login.php'); exit(); } ?> <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Login With Google</title> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" integrity="sha384-/Y6pD6FV/Vv2HJnA6t+vslU6fwYXjCFtcEpHbNJ0lyAFsXTsjBbfaDjzALeQsN6M" crossorigin="anonymous"> </head> <body> <div class="container" style="margin-top: 100px"> <div class="row"> <div class="col-md-3"> <img style="width: 80%;" src="<?php echo $_SESSION['picture'] ?>"> </div> <div class="col-md-9"> <table class="table table-hover table-bordered"> <tbody> <tr> <td>ID</td> <td><?php echo $_SESSION['id'] ?></td> </tr> <tr> <td>First Name</td> <td><?php echo $_SESSION['givenName'] ?></td> </tr> <tr> <td>Last Name</td> <td><?php echo $_SESSION['familyName'] ?></td> </tr> <tr> <td>Email</td> <td><?php echo $_SESSION['email'] ?></td> </tr> <tr> <td>Gender</td> <td><?php echo $_SESSION['gender'] ?></td> </tr> <tr> <td>Logout</td> <td><a href="logout.php">Logout</a></td> </tr> </tbody> </table> </div> </div> </div> </body> </html>
Logout Page
logout.php
<?php require_once "config.php"; unset($_SESSION['access_token']); $gClient->revokeToken(); session_destroy(); header('Location: login.php'); exit(); ?>
Demo Image
You can also check
I hope this article helped you to know “Login with Google Account Using PHP”.To get the latest news and updates follow us on twitter & facebook, subscribe to our YouTube channel. And If you have any query then please let us know by using the comment form.
Moss says
Hi Abhishek,
I am intrigued by the way you put together this tutorial. In some way it can also b an ultimate guide. I’m not a techy person but I’m certainly learning some great tectniques from reading your article.
Thank you for sharing.
Abhishek Kumar says
its pleasure for me Moss that you like my post.
Thanks for sharing this good information. I like is very much, please keep it up
Hi Pinoy,
Thanks for visiting techjunkgigs
Hey Abhishek,
Very nice tutorial. I am new to coding so It had to be a game of trial and error. You should make a video about this. I am sure it will help many people.
Thanks
Hi Ashish,
its pleasure for me that you like the post.
And ASP i’ll provide the video for this tutorial .
Thanks for visiting 🙂
It’s nice article, lots of learning point you mentioned that is helpful to understand better. thanks for sharing helpful blog post.
Hi Jina,
its pleasure for me that you like this post.
Thanks for visiting techjunkgigs 🙂
How to get these from google libraries Google API, Google Client, Google Oauth and other libraries??
Hi Addy,
Thanks for visiting techjunkgigs
For Google API libraries you can go through this link https://github.com/google/google-api-php-client
And for Google clint and google Oauth you can go through this link https://console.cloud.google.com/ and follow the steps given in the post. 🙂
This is the post I was looking for. It is a detailed teaching about “Login with Google Account using PHP”. Thanks for sharing the information.
Thank you very much