Аутентификация с помощью Google OAuth
В настоящее время я работаю над системой аутентификации OAuth для моего сайта, которая позволяет входить пользователям через Google API.
Я работаю с Codeigniter 2.0.2, и у меня нет PECL OAuth, скомпилированного на моем сервере, поэтому мне приходится использовать raw php для этого.
Я дошел до аутентификации пользователя с помощью Google и получения oauth_token и oauth_token_secret для этого пользователя.
Но после бесконечного чтения протокола я все еще не могу найти, как эти oauth_key и oauth_token_secret получают доступ к другому API для сбора следующей информации:
- Адрес электронной почты
- Изображение профиля
- ФИО
- Место нахождения
Вот текущий код, который я использую для аутентификации:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class OAuth extends CI_Controller
{
public function __construct()
{
parent::__construct();
$this->load->library('google_oauth',array(
'key' => '*REMOVED*',
'secret' => '*REMOVED*',
'algorithm' => 'HMAC-SHA1'
));
}
public function login()
{
//Get Request Token
$response = $this->google_oauth->get_request_token(
site_url("/oauth/collect"),
'http://www.google.com/m8/feeds/'
);
//Store temp
$this->session->set_flashdata('g.token.secret', $response['token_secret']);
//Redirect
redirect($response['redirect']);
}
public function collect()
{
$token_s = $this->session->flashdata('g.token.secret');
if(!$token_s)
{
$this->session->set_flashdata('error','Invalid auth session data, please rety your login');
redirect();
}
$oauth = $this->google_oauth->get_access_token(false, $token_s);
/*Check the data is valid*/
if(!isset($oauth['oauth_token']) || !isset($oauth['oauth_token_secret']))
{
$this->session->set_flashdata('error','Unable to authecticate securly with Google, please try again');
redirect();
}
$token = $oauth['oauth_token'];
$secret = $oauth['oauth_token_secret'];
//Will Store Here
}
}
И я в настоящее время использую слегка измененную версию этого класса аутентификации:
1 ответ
Вы пробовали экспериментировать с Google OAuth Playground? Это полезно для определения того, к каким API-каналам вы можете обращаться, и для создания допустимых строк запросов.
Вот список API Google, к которым вы можете получить доступ: Google API Directory
надеюсь, это поможет