Hướng dẫn login with google php - đăng nhập bằng google php

Bây giờ việc login mạng xã hội đối với nhu cầu website rất cần thiết, giúp cho người dùng đăng nhập và đăng ký một cách nhanh và hiệu quả, ta cũng thấy rằng các website khác có các chức năng như: Login Google hoặc Facebook,Twitter,...login khác nhiều mạng xã hội

Nay mình chia sẻ mọi người cách Login Google như sau, đầu tiên ta cũng cần cài đặt trên Google API Console, để có được (client ID,client secret)

Hướng dẫn login with google php - đăng nhập bằng google php

Hướng dẫn login with google php - đăng nhập bằng google php

Hướng dẫn login with google php - đăng nhập bằng google php
Sau khi ta có được Client ID và Client secret ta copy nó và lưu lại để hồi khai báo trong login google.

Tiếp tục bạn cần tải bộ thư viện google cung cấp cho ta về có 2 cách để làm điều này, bạn dùng cách nào cũng được!

Cách 1: $ composer require google/apiclient:"^2.0"$ composer require google/apiclient:"^2.0"

Cách 2: https://github.com/googleapis/google-api-php-client/releaseshttps://github.com/googleapis/google-api-php-client/releases

Khi bạn tải thư viện về, bạn giải nén vào project bạn cần dùng là được!

Tạo file define.php in project define.php in project 

Ở bên trên mình cài đặt file define.phpđể giúp chúng ta thuận lợi khi gọi chúng, bạn copy các Client ID và Clien Secret vào file define.php define.phpđể giúp chúng ta thuận lợi khi gọi chúng, bạn copy các Client ID và Clien Secret vào file define.php 

Tạo file redirect-google.php trong project của ta như sau:redirect-google.php trong project của ta như sau:

setClientId(GOOGLE_APP_ID);
    $client->setClientSecret(GOOGLE_APP_SECRET);
    $client->setRedirectUri(GOOGLE_APP_CALLBACK_URL);
    $client->addScope("email");
    $client->addScope("profile");
   
    if (isset($_GET['code'])) {
        $token = $client->fetchAccessTokenWithAuthCode($_GET['code']);
       // print_r($token);
        $client->setAccessToken($token['access_token']);

        // get profile info
        $google_oauth = new Google_Service_Oauth2($client);
        $google_account_info = $google_oauth->userinfo->get();
        $email =  $google_account_info->email;
        $name =  $google_account_info->name;
       // print_r($google_account_info);
       /**
        * CHECK EMAIL AND NAME IN DATABASE
        */
        $check = "SELECT * FROM `users` WHERE `email`='".$email."' and `name`='".$name."'";
        $result = mysqli_query($conn,$sql);
        $rowcount=mysqli_num_rows($result);
        if($rowcount>0){
            /**
             * USER EXITS
             */
            header('location:home');
        }
        else{
            /**
             * INSERT USER TO DATABASE
             * AFTER INSERT, YOU CAN HEADER TO HOME
             */

        }
       
    } else {
        /**
         * IF YOU DON'T LOGIN GOOGLE
         * YOU CAN SEEN AGAIN GOOGLE_APP_ID, GOOGLE_APP_SECRET, GOOGLE_APP_CALLBACK_URL
         */
        echo "Google Login";
    }

Vậy là xong, giờ ta có thể test thử xem coi nó chạy sao, bạn chỉ cần gõ http://localhost/LoginGoogle/redirect-google.php là được http://localhost/LoginGoogle/redirect-google.php là được

Hướng dẫn login with google php - đăng nhập bằng google php

Các bạn nếu gặp lỗi thì xem lại phần Client ID và Client Secret, Link Callback đúng chưa nghe! Chúc các bạn thành công!

Chào các bạn. Như đã biết thì Google API client library sẽ cho phép chung ta sử dụng rất nhiều dịch vụ của Google như Google+, Drive, Google Map, Yotube,...và hôm nay tôi sẽ hướng dẫn các bạn cách sử dụng nó để đăng nhập vào website. Và tất nhiên để sử dụng thư viện này chúng ta cần phải có Client id và Secret key và đây là cách để lấy Client id và Secret key từ Google API Console.

Hướng dẫn login with google php - đăng nhập bằng google php

Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.freetuts.net, không được copy dưới mọi hình thức.

Mục tiêu: Đăng nhập hoặc tạo mới 1 account với Google API: Đăng nhập hoặc tạo mới 1 account với Google API

Yêu cầu cho project này:

  • PHP version 5.4 hoặc cao hơn
  • Client id và Secret Key
  • Thư viện Google API client library for php
  • Cấu trúc folder: project /google_api/login (bạn có thể thay đổi theo cách của bạn)

1. Tạo database

Việc đầu tiên là tạo 1 database với cấu trúc table như sau:

Bài viết này được đăng tại [free tuts .net]

CREATE TABLE IF NOT EXISTS `google_users` (
  `google_id` decimal(21,0) NOT NULL,
  `google_name` varchar(60) NOT NULL,
  `google_email` varchar(60) NOT NULL,
  `google_link` varchar(60) NOT NULL,
  `google_picture_link` varchar(200) NOT NULL,
  PRIMARY KEY (`google_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

2. Tải thư viện Google API client

Có 2 cái cách để tải:

Cách 1: Tải trực tiếp từ Github thông qua link này. Sau khi tải về bạn giải nén và copy tất cả bỏ vào thư mục login/ : Tải trực tiếp từ Github thông qua link này. Sau khi tải về bạn giải nén và copy tất cả bỏ vào thư mục login/

Cách 2: Sử dụng composer để tải về:: Sử dụng composer để tải về:

Mở thư mục /google_api/login/ và tạo 1 file composer.json với nội dung

{
	"require": {
	  "google/apiclient": "1.0.*@beta"
	}
}

Sau đó trên command line chạy lệnh: Composer install và một folder vendor sẽ xuất hiện trong code của bạnComposer install và một folder vendor sẽ xuất hiện trong code của bạn

3. Tạo page login và xử lý thôi

Tạo 1 page login.php trong thư mục

setClientId(GOOGLE_APP_ID);
    $client->setClientSecret(GOOGLE_APP_SECRET);
    $client->setRedirectUri(GOOGLE_APP_CALLBACK_URL);
    $client->addScope("email");
    $client->addScope("profile");
   
    if (isset($_GET['code'])) {
        $token = $client->fetchAccessTokenWithAuthCode($_GET['code']);
       // print_r($token);
        $client->setAccessToken($token['access_token']);

        // get profile info
        $google_oauth = new Google_Service_Oauth2($client);
        $google_account_info = $google_oauth->userinfo->get();
        $email =  $google_account_info->email;
        $name =  $google_account_info->name;
       // print_r($google_account_info);
       /**
        * CHECK EMAIL AND NAME IN DATABASE
        */
        $check = "SELECT * FROM `users` WHERE `email`='".$email."' and `name`='".$name."'";
        $result = mysqli_query($conn,$sql);
        $rowcount=mysqli_num_rows($result);
        if($rowcount>0){
            /**
             * USER EXITS
             */
            header('location:home');
        }
        else{
            /**
             * INSERT USER TO DATABASE
             * AFTER INSERT, YOU CAN HEADER TO HOME
             */

        }
       
    } else {
        /**
         * IF YOU DON'T LOGIN GOOGLE
         * YOU CAN SEEN AGAIN GOOGLE_APP_ID, GOOGLE_APP_SECRET, GOOGLE_APP_CALLBACK_URL
         */
        echo "Google Login";
    }
0 với nội dung

setClientId($client_id);
$client->setClientSecret($client_secret);
$client->setRedirectUri($redirect_uri);
$client->addScope("email");
$client->addScope("profile");

$service = new Google_Service_Oauth2($client);

// Nếu kết nối thành công, sau đó xử lý thông tin và lưu vào database
if (isset($_GET['code'])) {
  	$client->authenticate($_GET['code']);
 	$_SESSION['access_token'] = $client->getAccessToken();
  	//header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL));
  	$user = $service->userinfo->get(); //get user info 

   	// connect to database
	$mysqli = new mysqli($host_name, $db_username, $db_password, $db_name);
	if ($mysqli->connect_error) {
	    die('Error : ('. $mysqli->connect_errno .') '. $mysqli->connect_error);
	}

	//Kiểm tra xem nếu user này đã tồn tại, sau đó nên login tự động
	$result = $mysqli->query("SELECT COUNT(google_id) as usercount FROM google_users WHERE google_id=$user->id");
	$user_count = $result->fetch_object()->usercount; //will return 0 if user doesn't exist

	//show user picture
	echo '';

	if($user_count) // Nếu user tồn tại thì show thông tin hiện có
	{
	    echo 'Welcome back '.$user->name.'! [Log Out]';
	}
	else //Ngược lại tạo mới 1 user vào database
	{ 
	    echo 'Hi '.$user->name.', Thanks for Registering! [Log Out]';
	    $statement = $mysqli->prepare("INSERT INTO google_users (google_id, google_name, google_email, google_link, google_picture_link) VALUES (?,?,?,?,?)");
	    $statement->bind_param('issss', $user->id,  $user->name, $user->email, $user->link, $user->picture);
	    $statement->execute();
	    echo $mysqli->error;
	}
  	exit;
}

//Nếu sẵn sàng kết nối, sau đó lưu session với tên access_token
if (isset($_SESSION['access_token']) && $_SESSION['access_token']) {
 	$client->setAccessToken($_SESSION['access_token']);
} else { // Ngược lại tạo 1 link để login
 	$authUrl = $client->createAuthUrl();
}

//Hiển thị button để login
echo '
'; if (isset($authUrl)){ //show login url echo '
'; echo '

Login with Google -- Demo

'; echo '
Please click login button to connect to Google.
'; echo ''; echo '
'; } echo '
';

Truy cập link

setClientId(GOOGLE_APP_ID);
    $client->setClientSecret(GOOGLE_APP_SECRET);
    $client->setRedirectUri(GOOGLE_APP_CALLBACK_URL);
    $client->addScope("email");
    $client->addScope("profile");
   
    if (isset($_GET['code'])) {
        $token = $client->fetchAccessTokenWithAuthCode($_GET['code']);
       // print_r($token);
        $client->setAccessToken($token['access_token']);

        // get profile info
        $google_oauth = new Google_Service_Oauth2($client);
        $google_account_info = $google_oauth->userinfo->get();
        $email =  $google_account_info->email;
        $name =  $google_account_info->name;
       // print_r($google_account_info);
       /**
        * CHECK EMAIL AND NAME IN DATABASE
        */
        $check = "SELECT * FROM `users` WHERE `email`='".$email."' and `name`='".$name."'";
        $result = mysqli_query($conn,$sql);
        $rowcount=mysqli_num_rows($result);
        if($rowcount>0){
            /**
             * USER EXITS
             */
            header('location:home');
        }
        else{
            /**
             * INSERT USER TO DATABASE
             * AFTER INSERT, YOU CAN HEADER TO HOME
             */

        }
       
    } else {
        /**
         * IF YOU DON'T LOGIN GOOGLE
         * YOU CAN SEEN AGAIN GOOGLE_APP_ID, GOOGLE_APP_SECRET, GOOGLE_APP_CALLBACK_URL
         */
        echo "Google Login";
    }
1 và xem kết quả

4. Lời kết

Trong bài viết này có đề cập đến chức năng sử dụng composer để quản lý các thư viện và các để lấy Client ID và Secret key từ google api console. Tôi sẽ hướng dẫn chi tiết vào bài viết khác.composer để quản lý các thư viện và các để lấy Client ID và Secret key từ google api console. Tôi sẽ hướng dẫn chi tiết vào bài viết khác.

Nếu bạn có bất kỳ vấn đề gì trong quá trình tích hợp hãy để lại comment bên dưới. Tôi sẽ trả lời sớm nhất.