I am new to CodeIgniter and PHP. Redirect URL given in Google API Console:
Redirect URIs: http://localhost/testsaav/index.php/main/gmail_invite
Following code shows me Request For Permission page. When I click Allow Access
it takes me to
http://localhost/testsaav/index.php/main/gmail_invite?code=4/CXD462cen-oEBe1GaHIH90hjqb2X.QpVsg7mG4AUXaDn_6y0ZQNgaCVLxeAI
I want to redirect it to another page and show the response there. Controller method
function gmail_invites($data)
{
$this->load->view('socialInvites2',$data);
}
View implementation
<?php
require_once APPPATH.'libraries/Google_Client.php';
session_start();
$client = new Google_Client();
$client->setApplicationName('Google Contacts PHP Sample');
$client->setScopes("http://www.google.com/m8/feeds/");
$client->setClientId('xxx.apps.googleusercontent.com');
$client->setClientSecret('xxx-xxx');
$client->setRedirectUri('http://localhost/testsaav/index.php/main/gmail_invite');
if (isset($_GET['code'])) {
$client->authenticate();
$_SESSION['token'] = $client->getAccessToken();
$redirect = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
header('Location: ' . filter_var($redirect, FILTER_SANITIZE_URL));
}
if (isset($_SESSION['token'])) {
$client->setAccessToken($_SESSION['token']);
}
if (isset($_REQUEST['logout'])) {
unset($_SESSION['token']);
$client->revokeToken();
}
if ($client->getAccessToken()) {
$req = new Google_HttpRequest("https://www.google.com/m8/feeds/contacts/default/full");
$val = $client->getIo()->authenticatedRequest($req);
//$xml = simplexml_load_string($val->getResponseBody());
//$result = $xml->xpath('//gd:email');
/*foreach ($result as $title) {
echo $title->attributes()->address . "<br>";
}*/
// The contacts api only returns XML responses.
$response = json_encode(simplexml_load_string($val->getResponseBody()));
//print "<pre>" . print_r(json_decode($response, true), true) . "</pre>";
// The access token may have been updated lazily.
$_SESSION['token'] = $client->getAccessToken();
} else {
$auth = $client->createAuthUrl();
}
print "<a class='facebook-button' id='facebookbutton' href='$auth'>
<span class='fb-button-left'></span>
<span class='fb-button-center'>Invite GMail Friends</span>
<span class='fb-button-right'></span></a>"; ?>
<br/>
Why do you have all that php code in your view? That's not how MVC works.
Logic code should be kept in your Controller and not your View. I suggest that you use a Codeiginter OAuth2 library because the original code from Google's OAuth2 lib isn't meant to be compatible with Codeiginter or any other particular MVC framework. For example you could use this one: https://github.com/philsturgeon/codeigniter-oauth2
You're being redirected to the correct controller because the url is set here:
$client->setRedirectUri('http://localhost/testsaav/index.php/main/gmail_invite');
Also take a look at Codeigniter's redirect method: redirect('somecontroller/some_method')