一、申请clientID https://console.developers.google.com/project 二、开启Google+ API权限 https://console.developers.google.com/project/gentle-charmer-848/apiui/api 三、添加同意画面 四、建立新的用户端ID(一个域名对应一个ID) 五、显示页面js登

一、申请clientID

https://console.developers.google.com/project

ecshop使用Google API及OAuth2.0登录授权(PHP)-LMLPHP

二、开启Google+ API权限

https://console.developers.google.com/project/gentle-charmer-848/apiui/api

ecshop使用Google API及OAuth2.0登录授权(PHP)-LMLPHP

三、添加同意画面

ecshop使用Google API及OAuth2.0登录授权(PHP)-LMLPHP

四、建立新的用户端ID(一个域名对应一个ID)

ecshop使用Google API及OAuth2.0登录授权(PHP)-LMLPHP

五、显示页面js登录按钮

案例地址:https://developers.google.com/+/web/signin/

参考代码:

六、google_login.

require(dirname(__FILE__) . '/includes/init.
if(isset($_REQUEST['access_token'])) {
$access_token = $_REQUEST['access_token'];
$url = "https://www.googleapis.com/oauth2/v1/userinfo?access_token=".$access_token;

$user_gg = json_decode(file_get_contents($url),true);
$gg_email = compile_str($user_gg['email']);
$gg_id = $user_gg['id'];
$gg_name = compile_str($user_gg['name']);
$picture = $user_gg['picture'] == 'https://lh3.googleusercontent.com/-XdUIqdMkCWA/AAAAAAAAAAI/AAAAAAAAAAA/4252rscbv5M/photo.jpg' ? '' : compile_str($user_gg['picture']); //头像
$gender = 0;
if($user_gg['gender'] == 'male')//性别
{
$gender = 1;
}
elseif($user_gg['gender'] == 'female')
{
$gender = 2;
}

$locale = compile_str($user_gg['locale']); //国家
$verified_email = $user_gg['verified_email']; //邮箱是否验证
if(empty($gg_email))
{
show_message("Your Google email is empty!", '', 'user. }

$sql = "select * from ".$GLOBALS['ecs']->table("users")." where email='".$gg_email.
"' or user_name='".$gg_email."' order by user_id desc limit 1";
$user_info = $GLOBALS['db']->getRow($sql);
$record = array();
if(!empty($user_info)) //gg邮箱已注册或者登陆过
{
$user_name = $user_info['user_name'];
$user->set_session($user_name);
$user->set_cookie($user_name, null);
update_user_info();
recalculate_price();

if(empty($user_info['gg_id']) || empty($user_info['nick_name']) || empty($user_info['user_image']) || empty($user_info['sex']))
{
$record['is_validated'] = 1;
empty($user_info['gg_id']) ? $record['gg_id'] = $gg_id : '';
empty($user_info['gg_name']) ? $record['gg_name'] = $gg_name : '';
empty($user_info['nick_name']) ? $record['nick_name'] = $gg_name : '';
empty($user_info['user_image']) ? $record['user_image'] = get_picture($picture) : '';
empty($user_info['sex']) ? $record['sex'] = $gender : '';
$db->autoExecute($ecs->table('users'), $record, 'UPDATE', "user_id = '$user_info[user_id]'");
}
}
else //GG邮箱未注册或者未登陆过,自动注册
{
$password = generate_word();
include_once(ROOT_PATH."includes/lib_passport. include_once(ROOT_PATH.'includes/lib_transaction. $other = array();
if(register($gg_email, $password, $gg_email,$other))
{
$record['gg_id'] = $gg_id;
$record['gg_name'] = $gg_name;
$record['nick_name'] = $gg_name;
$record['user_image'] = get_picture($picture);
$record['sex'] = $gender;
$record['reg_type'] = 3;
$record['is_validated']= 1;
$db->autoExecute($ecs->table('users'), $record, 'UPDATE', "user_id = '$_SESSION[user_id]'");
/* 发送注册成功邮件*/
$tpl = get_mail_template('pp_login');
$expired_date =local_date("Y-m-d", gmtime()+864000);
$smarty->assign('expired_date', $expired_date);
$smarty->assign('password', $password);
$smarty->assign('username', $gg_email);
$content = $GLOBALS['smarty']->fetch('str:' . $tpl['template_content']);
send_mail($gg_email, $gg_email,$tpl['template_subject'],$content,$tpl['is_html']);
log_account_change($_SESSION['user_id'], 0, 0, 0, 50, 'Get 50 M points from Google register.', ACT_OTHER);
}
else
{
show_message("Your Google email register error!", '', 'user. }
}
$_SESSION['back_act'] = $_SESSION['back_act'] ? $_SESSION['back_act'] : "./index.html";
ecs_header("Location:".$_SESSION['back_act']."\n");
}
else
{
die('Illegal Access!');
}
//获取远程头像图片
function get_picture($picture){
if($picture)
{
$data = file_get_contents($picture); // 读文件内容
$filename = DATA_DIR . '/u_image/'.local_date('ymdHis',gmtime()).'_'.rand(10,99).substr($picture,-4,4); //得到时间戳
$fp = @fopen(ROOT_PATH . $filename,"w"); //以写方式打开文件
@fwrite($fp,$data);
fclose($fp);
}
else
{
$filename = '';
}
return $filename;
}
?>
七、添加新字段的sql语句

ALTER TABLE `ecs_users` ADD `gg_name` varchar(60) NOT NULL;
ALTER TABLE `ecs_users` ADD `gg_id` varchar(60) NOT NULL;
ALTER TABLE `ecs_users` ADD `nick_name` varchar(60) NOT NULL;
ALTER TABLE `ecs_users` ADD `user_image` varchar(60) NOT NULL;

08-15 00:15