PHP允许用户用谷歌账号登录网站
注意:首先要确保用户电脑和网站服务器都能访问谷歌。
先登录谷歌凭据API管理平台
https://console.cloud.google.com/apis/credentials
选择【凭据】->【创建凭据】
[适用于来自浏览器的请求] 这里增加一个URL,是自己的域名。
[适用于来自 Web 服务器的请求] 这里增加一个URL, 是本代码所在的路径。
session_start();
//谷歌API ID
$googleClientID = 'xxxx.apps.googleusercontent.com';
$googleClientSecret = '谷歌秘钥';
//获取code的接口
$authorizeURL = 'https://accounts.google.com/o/oauth2/v2/auth';
//获取token的接口
$tokenURL = 'https://www.googleapis.com/oauth2/v4/token';
//
$baseURL = 'https://我的域名/本文件.php' ;//如果没有code参数,则进入code请求
if(!isset($_GET['code'])) {//生成一个随机的字符作为state$state = md5(time() . rand(1000, 9999));$_SESSION['state'] = $state;$params = array('response_type' => 'code','client_id' => $googleClientID,'redirect_uri' => $baseURL,'scope' => 'profile email','state' => $state);header('Location:'.$authorizeURL.'?'.http_build_query($params));
}
//如果有code参数,则进入token请求
if(isset($_GET['code'])) {//验证state是自己之前生成的。if(!isset($_GET['state']) || $_SESSION['state'] != $_GET['state']) {header('Location: ' . $baseURL . '?error=invalid_state');die();}// Exchange the authorization code for an access token$ch = curl_init($tokenURL);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(['grant_type' => 'authorization_code','client_id' => $googleClientID,'client_secret' => $googleClientSecret,'redirect_uri' => $baseURL,'code' => $_GET['code']]));$response = json_decode(curl_exec($ch), true);//用token获取用户信息$ch = curl_init('https://www.googleapis.com/oauth2/v3/tokeninfo?id_token='.$response['id_token']);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);$res= json_decode(curl_exec($ch), true);if(empty($res)){return 'authentication error!';}$email=isset($res['email'])?$res['email']:'';$name=isset($res['name'])?$res['name']:'';$pic=isset($res['picture'])?$res['picture']:'';// 构建数据, 如果数据库存在此email则直接登录,如果没有则先写入再登录$login=$this->model->login('email='.$email.');session('uid', $login->id);session('username', $login->username);session('email', $login->email);alert_location('登录成功!', Url::home('member/ucenter'), 1);
}
PHP允许用户用谷歌账号登录网站相关推荐
- 如何申请一个免费的域名。。在 freenom 上 并解决用谷歌账号登录不上的问题
没有Google账号的,和按这篇文章但没成功的 看 Freenom 申请免费域名(二) 背景 想给我们班级注册一个域名,哈哈哈用来存放一些共同信息,同时记录一下解决用谷歌账号登录不上的问题 需要的东西 ...
- 谷歌账号登录twitter_Google会购买Twitter吗?
谷歌账号登录twitter The latest rumor to circulate the Internet is that Google is in the final stages of ne ...
- 谷歌账号登录Google API Oauth 2.0简单申请和使用教程
在点击编辑,修改回调URL 编辑完后可以参照google开发文档开发 https://developers.google.com/accounts/docs/OAuth2?hl=zh-CN 然后按照需 ...
- Zoom无法登录,用Apple账号,谷歌账号登录不上的问题
zoom登录失败,电子邮件或密码不正确,apple,谷歌账号登录问题 最近好多的zoom用户出现这个问题.用所有的方法尝试登录,一直显示,电子邮件或密码不正确. 一般会出现这种问题,在ipad上面可以 ...
- lol手游显示无法连接谷歌服务器,《lol手游》谷歌账号登录失败如何解决 谷歌账号登录失败解决教程...
导 读 lol手游谷歌账号登录失败怎么办?登录不上的原因有很多种,不过玩家在使用谷歌账号,并且是按照正规途径下载的游戏,却也依旧无法顺利进入到游戏当中去,这也给人一种很绝望的感觉,究竟该如何操作,才能 ...
- 谷歌浏览器登录不了账号_谷歌浏览器使用分享(可谷歌账号登录)之谷歌账号登录...
由于谷歌退出中国市场以及中国网络安全法规的限制,中国大陆用户无法访问谷歌服务器,也不能使用其提供的应用,所以我们需要下载一个插件(集装箱),借此来登录谷歌账号. 1.直接网页搜索"集装箱&q ...
- Django 实现第三方账号登录网站
这里我们使用 django-allauth 模块来实现第三方账号验证登录,官方文档如下:https://django-allauth.readthedocs.io/en/latest/ . 安装 dj ...
- 【Serverless】【认证服务】接入谷歌账号登录时提示错误码10
[问题描述]: 项目集成了华为认证服务,将身份验证服务用于(电子邮件.电话.谷歌),使用谷歌帐户登录提示错误代码 10 . 显示错误的跟踪 : 已经检查了 SHA256,它与我的项目相同 ,下载了新的 ...
- 抓狂!谷歌账号又又登录异常?给你支招解决
最近,就有很多朋友向东哥反馈说,谷歌账号登录异常了,明明账号密码都是对的,愣是登不上去,严重影响工作进度,很是捉急.所以东哥今天就总结了一份谷歌账号登录异常的解决方案,希望能帮助到大家! 谷歌账号登录 ...
最新文章
- 图像识别工程师 VS The application has requested the Runtime to terminate it in an unusual way.
- jQuery 第二章
- 设计模式之Facade(外观)模式
- JfreeChart(八)之甘特图
- 知乎学了python_为什么要学 Python?
- Ansi,UTF8,Unicode编码
- 【数据库】MySql分割字符串
- Linux安装jdk、删除Open jdk
- serialVersionUID 的含义
- 网站域名被拦截,网站被流量劫持,服务器攻击,网站被跨区恶意点击,问题的定义与解答
- 沪江日语频道 » 日语真题
- 结构化数据、半结构化数据、非结构化数据的对比
- LOAM系列——LeGO-LOAM配置、安装、问题解决及VLP16测试效果(完结版)
- 苹果XR设备多次“跳票” XR行业的未来将如何
- allow_pickle什么意思_Python多处理PicklingError:不能pickle
- linux 3.10 gro的理解和改进
- linux write的行为
- 8月9日华为发布了其自研的鸿蒙操作系统,华为正式发布自研操作系统鸿蒙
- GO(golang)语言使用SMTP发送电子邮件,简单和复杂带附件cc,bcc
- python获取网卡的ip子网掩码和网关