hi this is my controller :
Code:
<?php
namespace App\Controllers;
// https://console.cloud.google.com/apis
use Google\Client as Google_Client;
use Google\Service\Calendar as Google_Service_Calendar ;
use Google\Service\Oauth2 as Google_Service_Oauth2;
class Google_calendar extends BaseController {
public function login()
{
$google_client = new Google_Client();
$google_client->setAuthConfig(WRITEPATH.'google_calendar/credentials.json');
$google_client->setRedirectUri( base_url().'/google_calendar/login'); //Define your Redirect Uri
$google_client->addScope('email');
$google_client->addScope('profile');
$google_client->setScopes(Google_Service_Calendar::CALENDAR);
if(isset($_GET["code"]))
{
$token = $google_client->fetchAccessTokenWithAuthCode($_GET["code"]);
if(!isset($token["error"]))
{
$google_client->setAccessToken($token['access_token']);
session()->set('access_token', $token['access_token']);
$google_service = new Google_Service_Oauth2($google_client);
$data = $google_service->userinfo->get();
$current_datetime = date('Y-m-d H:i:s');
//insert data
session()->set('user_data' , array(
'login_oauth_uid' => $data['id'],
'first_name' => $data['given_name'],
'last_name' => $data['family_name'],
'email_address' => $data['email'],
'profile_picture' => $data['picture'],
'created_at' => $current_datetime
));
}
}
$login_button = '';
if(!session()->get('access_token'))
{
$login_button = '<a href="'.$google_client->createAuthUrl().'"><img src="'.base_url().'/asset/sign-in-with-google.png" /></a>';
$data['login_button'] = $login_button;
echo view('empty_view',$data);
echo view('/google/google_login');
}
else
{
//$data['user_data'] = session()->get('user_data');
$data=[];
echo view('empty_view',$data);
echo view('/google/google_login');
}
}
public function logout()
{
session()->remove('access_token');
session()->remove('user_data');
return redirect()->to('google_calendar/login');
}
}
And this is my view :
Code:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Login with Google in Codeigniter</title>
<meta content='width=device-width, initial-scale=1, maximum-scale=1' name='viewport'/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" />
</head>
<body>
<div class="container">
<br />
<h2 align="center">Login using Google Account with Codeigniter</h2>
<br />
<div class="panel panel-default">
<?php
if(!isset($login_button))
{
$user_data = session()->get('user_data');
echo '<div class="panel-heading">Welcome User</div><div class="panel-body">';
echo '<img src="'.$user_data['profile_picture'].'" class="img-responsive img-circle img-thumbnail" />';
echo '<h3><b>Name : </b>'.$user_data["first_name"].' '.$user_data['last_name']. '</h3>';
echo '<h3><b>Email :</b> '.$user_data['email_address'].'</h3>';
echo '<h3><a href="'.base_url().'/google_calendar_quickstart/logout">Logout</h3></div>';
}
else
{
echo '<div align="center">'.$login_button . '</div>';
}
?>
</div>
</div>
</body>
</html>
i have problem with calendar :
Code:
Google\Service\Exception #401
{
"error": {
"code": 401,
"message": "Request is missing required authentication credential. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.",
"errors": [
{
"message": "Request is missing required authentication credential. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.",
"domain": "global",
"reason": "unauthorized"
}
],
"status": "UNAUTHENTICATED"
}
}
if i remove :
Code:
$google_client->setScopes(Google_Service_Calendar::CALENDAR);
I get my google data . How can i manage my calendar ?