Blame | Last modification | View Log | RSS feed
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');/*** Google OAuth2 Provider** @package CodeIgniter/OAuth2* @category Provider* @author Phil Sturgeon* @copyright (c) 2012 HappyNinjas Ltd* @license http://philsturgeon.co.uk/code/dbad-license*/class OAuth2_Provider_Google extends OAuth2_Provider{/*** @var string the method to use when requesting tokens*/public $method = 'POST';/*** @var string scope separator, most use "," but some like Google are spaces*/public $scope_seperator = ' ';public function url_authorize(){return 'https://accounts.google.com/o/oauth2/auth';}public function url_access_token(){return 'https://accounts.google.com/o/oauth2/token';}public function __construct(array $options = array()){// Now make sure we have the default scope to get user dataempty($options['scope']) and $options['scope'] = array('https://www.googleapis.com/auth/userinfo.profile','https://www.googleapis.com/auth/userinfo.email');// Array it if its string$options['scope'] = (array) $options['scope'];parent::__construct($options);}/** Get access to the API** @param string The access code* @return object Success or failure along with the response details*/public function access($code, $options = array()){if ($code === null){throw new OAuth2_Exception(array('message' => 'Expected Authorization Code from '.ucfirst($this->name).' is missing'));}return parent::access($code, $options);}public function get_user_info(OAuth2_Token_Access $token){$url = 'https://www.googleapis.com/oauth2/v1/userinfo?alt=json&'.http_build_query(array('access_token' => $token->access_token,));$ch = curl_init($url);curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);//$response = curl_exec($ch);$user = json_decode(curl_exec($ch), true);return array('uid' => $user['id'],'nickname' => url_title($user['name'], '_', true),'name' => $user['name'],'first_name' => $user['given_name'],'last_name' => $user['family_name'],'email' => $user['email'],'location' => null,'image' => (isset($user['picture'])) ? $user['picture'] : null,'description' => null,'urls' => array(),'loginType'=>'google',);}}