Login with Google Account using PHP

PHP Google OAuth Login

PHP Google OAuth API allows users to login in a website with their Google credentials. A user with a Google account need not remember yet another username/password for a web application.

Google OAuth Prerequisites

  1. Create Google API project and get OAuth credentials.
  2. click here Google Developers Console

  3. Here are the steps
    1. After this click on Create New Project link for create new project.
    2. Enter Project Name and click on Create button.
    3. Once you have created a new project then you can see your project list on web page.
    4. After this click on Google API logo for go to the home page.
    5. Once you have redirected to home page then select project from the project select box.
    6. After click on project select box, then one modal will popup and under this, you can find a list of project, so select your project.
    7. Now from left menu, you have to click on OAuth consent screen.
    8. Once you have click on OAuth consent screen, then one page will load, here you have to define application name and after this click on save button.
    9. When you have to click on save button, then after page will redirect another page, and here you have to click on Create credential button, so one drop-down menu will appear and from this, you have to select OAuth client ID.
    10. After click on OAuth client ID menu then you have redirected to another page, and here you can find different Application type.
    11. From different Application type option, you have to select Web application. Once you have select the Web application option, then one form will appear on the web page. Here you have to define Name and you have also define Authorized redirect URIs field and lastly click on Create button.
    12. Once you have click on create button, then you can get your Client ID and your client secret key. You have to copy both keys for future use for implement Login using Google account using PHP.
  4. Download / Install PHP Google API client library.
    1. copy this on CMD:- composer require google/apiclient:"^2.0"

Steps to implement Google authentication

  1. Create / Send authentication request.
  2. Access user data from Google.

Create Google OAuth Credentials

1: Create a new project and get the corresponding OAuth credentials using Google developer console page.

Language-specific requirements

To run any of the code samples in this document, you'll need a Google account, access to the Internet, and a web browser. If you are using one of the API client libraries, also see the language-specific requirements below.

To run the PHP code samples in this document, you'll need

  1. PHP 5.4 or greater with the command-line interface (CLI) and JSON extension installed.
  2. The Composer dependency management tool.
  3. The Google APIs Client Library for PHP:
  4. composer require google/apiclient:"^2.0"

First we need to create a config.php page to enter all the data that we get while creating our google API / OAuth Credentials

config.php page just copy the below code and replace with your own Google OAuth Credentials

Copy Source Code
Now, create a index.php page and then add the following code

Copy Source Code
At last, create a logout.php page and this code

Copy Source Code
This is it. I want you to try by yourself and comment below about your experience.


  1. awesome video sir,(hahhhhahah maja a gaya)

  2. Make video on send sms from localhost

  3. Can you make a tutorial for Mac users as well? I'm facing authentication errors.

  4. Hello,
    I am not able to fetch data, although login get successful but whenever I want to print username or email it shows blank.

    I use something like:
    $email = $data['email'];

    at the place of:
    $_SESSION['user_email_address'] = $data['email'];

    As I already check the code two times, the placement of session start and all that but I dont able to fetch the information... although it get successful login...

    1. This issue is solved.
      Actually I keep two different pages for login and dashboard, so I keep your index file as it is and create session in that and then insert an header to my dashboard.

      Yeeh! Thanks for this option of reply.

  5. I think this is an informative post and it is very useful and knowledgeable. therefore, I would like to thank you for the efforts you have made in writing this article. loign

  6. The Best Video tutorial i learned alot respect From Pakistan... There is one problem im facing i couldn't be able to access profile picture.. only i can be able to access email and name.. nothing else please need guide why..

  7. thanks for making this wonderful video! thanks a lot


  8. Fatal error: Uncaught GuzzleHttp\Exception\ClientException: Client error: `POST` resulted in a `400 Bad Request` response: { "error": "invalid_request", "error_description": "Bad Request" } in C:\xampp\htdocs\gopala\gopala_fastion\vendor\guzzlehttp\guzzle\src\Exception\RequestException.php:111 Stack trace: #0 C:\xampp\htdocs\gopala\gopala_fastion\vendor\guzzlehttp\guzzle\src\Middleware.php(66): GuzzleHttp\Exception\RequestException::create(Object(GuzzleHttp\Psr7\Request), Object(GuzzleHttp\Psr7\Response)) #1 C:\xampp\htdocs\gopala\gopala_fastion\vendor\guzzlehttp\promises\src\Promise.php(203): GuzzleHttp\Middleware::GuzzleHttp\{closure}(Object(GuzzleHttp\Psr7\Response)) #2 C:\xampp\htdocs\gopala\gopala_fastion\vendor\guzzlehttp\promises\src\Promise.php(156): GuzzleHttp\Promise\Promise::callHandler(1, Object(GuzzleHttp\Psr7\Response), Array) #3 C:\xampp\htdocs\gopala\gopala_fastion\vendor\guzzlehttp\promises\src\TaskQueue.php(47): GuzzleHttp\Promise\Promise::GuzzleHttp\Promise\{clo in C:\xampp\htdocs\gopala\gopala_fastion\vendor\guzzlehttp\guzzle\src\Exception\RequestException.php on line 111

  9. Hello i got this error after selecting the google account for login..pls help

    Fatal error: Uncaught GuzzleHttp\Exception\RequestException: cURL error 77: error setting certificate verify locations: CAfile: C:\xampp\apache\bin\curl-ca-bundle.crt CApath: none (see in C:\xampp\htdocs\login\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php:208 Stack trace: #0 C:\xampp\htdocs\login\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php(162): GuzzleHttp\Handler\CurlFactory::createRejection(Object(GuzzleHttp\Handler\EasyHandle), Array) #1 C:\xampp\htdocs\login\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php(109): GuzzleHttp\Handler\CurlFactory::finishError(Object(GuzzleHttp\Handler\CurlHandler), Object(GuzzleHttp\Handler\EasyHandle), Object(GuzzleHttp\Handler\CurlFactory)) #2 C:\xampp\htdocs\login\vendor\guzzlehttp\guzzle\src\Handler\CurlHandler.php(45): GuzzleHttp\Handler\CurlFactory::finish(Object(GuzzleHttp\Handler\CurlHandler), Object(GuzzleHttp\Handler\EasyHandle), Object(GuzzleHttp\Handler\CurlFactory)) #3 C:\xampp\htdocs\login\vendor\guz in C:\xampp\htdocs\login\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php on line 208

  10. getting error This page isn’t working
    localhost is currently unable to handle this request.
    HTTP ERROR 500

  11. I have faced an issue in log out. please tell me

    Fatal error: Uncaught GuzzleHttp\Exception\ClientException: Client error: `POST` resulted in a `400 Bad Request` response: { "error": "invalid_request", "error_description": "Bad Request" } in C:\xampp\htdocs\googleApi\vendor\guzzlehttp\guzzle\src\Exception\RequestException.php:111 Stack trace: #0 C:\xampp\htdocs\googleApi\vendor\guzzlehttp\guzzle\src\Middleware.php(66): GuzzleHttp\Exception\RequestException::create(Object(GuzzleHttp\Psr7\Request), Object(GuzzleHttp\Psr7\Response)) #1 C:\xampp\htdocs\googleApi\vendor\guzzlehttp\promises\src\Promise.php(203): GuzzleHttp\Middleware::GuzzleHttp\{closure}(Object(GuzzleHttp\Psr7\Response)) #2 C:\xampp\htdocs\googleApi\vendor\guzzlehttp\promises\src\Promise.php(156): GuzzleHttp\Promise\Promise::callHandler(1, Object(GuzzleHttp\Psr7\Response), Array) #3 C:\xampp\htdocs\googleApi\vendor\guzzlehttp\promises\src\TaskQueue.php(47): GuzzleHttp\Promise\Promise::GuzzleHttp\Promise\{closure}() #4 C:\xampp\htdocs\googleApi\vendor\guzzlehttp\promi in C:\xampp\htdocs\googleApi\vendor\guzzlehttp\guzzle\src\Exception\RequestException.php on line 111


  12. Fatal error: Uncaught InvalidArgumentException: Redirect URI must be absolute in C:\xampp\htdocs\googleyoutubeapi\vendor\google\auth\src\OAuth2.php:771 Stack trace: #0 C:\xampp\htdocs\googleyoutubeapi\vendor\google\auth\src\OAuth2.php(347): Google\Auth\OAuth2->setRedirectUri('\r\n\r\nhttp://loca...') #1 C:\xampp\htdocs\googleyoutubeapi\vendor\google\apiclient\src\Google\Client.php(1021): Google\Auth\OAuth2->__construct(Array) #2 C:\xampp\htdocs\googleyoutubeapi\vendor\google\apiclient\src\Google\Client.php(1001): Google_Client->createOAuth2Service() #3 C:\xampp\htdocs\googleyoutubeapi\vendor\google\apiclient\src\Google\Client.php(362): Google_Client->getOAuth2Service() #4 C:\xampp\htdocs\googleyoutubeapi\india.php(63): Google_Client->createAuthUrl() #5 {main} thrown in C:\xampp\htdocs\googleyoutubeapi\vendor\google\auth\src\OAuth2.php on line 771

  13. I have to search sites with relevant information on given topic and provide them to teacher our opinion and the article. SKYWESTONLINE login

  14. I think this is an informative post and it is very useful and knowledgeable. therefore, I would like to thank you for the efforts you have made in writing this article. click

  15. This web page is usually a walk-through for all of the info it suited you in regards to this and didn’t know who must. Glimpse here, and you’ll undoubtedly discover it.
    Mobile price in Bangladesh