Я новичок в CodeIgniter и PHP. URL-адрес перенаправления, указанный в консоли API Google:
Redirect URIs: http://localhost/testsaav/index.php/main/gmail_invite
Следующий код показывает мне страницу «Запрос на разрешение». Когда я нажимаю « Allow Access
он принимает меня
http://localhost/testsaav/index.php/main/gmail_invite?code=4/CXD462cen-oEBe1GaHIH90hjqb2X.QpVsg7mG4AUXaDn_6y0ZQNgaCVLxeAI
Я хочу перенаправить его на другую страницу и показать ответ. Метод контроллера
function gmail_invites($data) { $this->load->view('socialInvites2',$data); }
Просмотреть реализацию
<?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/>
с<?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/>
Почему у вас есть весь этот PHP-код? Это не то, как работает MVC.
Логический код должен храниться в вашем контроллере, а не в вашем представлении. Я предлагаю вам использовать библиотеку Codeiginter OAuth2, потому что исходный код из OAuth2 lib от Google не предназначен для совместимости с Codeiginter или любой другой конкретной инфраструктурой MVC. Например, вы можете использовать этот: https://github.com/philsturgeon/codeigniter-oauth2
Вы перенаправляетесь на правильный контроллер, потому что здесь указан URL:
$client->setRedirectUri('http://localhost/testsaav/index.php/main/gmail_invite');
Также взгляните на метод redirect('somecontroller/some_method')
: redirect('somecontroller/some_method')