【第三方登录】Google邮箱
登录谷歌邮箱开发者
https://console.developers.google.com/
-
先创建项目





我们用的web应用
-
设置回调



核心主要:
1.创建应用
2.创建客户端ID
3.设置域名和重定向URL
4.对外公开,这样所有的gmail邮箱 都能参与测试
PHP代码实现
- 引入第三方包
https://github.com/googleapis/google-api-php-client/releases - 获取第三方跳转链接接口
public function googleUrl(){global $db,$request,$comId;//引入第三方包require_once 'inc/google_client/vendor/autoload.php'; $googleConfig = array("client_id"=>"客户端ID","project_id"=>"hudong",//项目名称"auth_uri"=>"https://accounts.google.com/o/oauth2/auth","token_uri"=>"https://oauth2.googleapis.com/token","auth_provider_x509_cert_url"=>"https://www.googleapis.com/oauth2/v1/certs","client_secret"=>"客户端秘钥","redirect_uris"=>["https://vip.com/Google"],//设置的回调结合 可以设置多个"javascript_origins"=>["https://vip.com"]//设置的获取JavaScript的来源配置 );$clientID = $googleConfig['client_id'];$clientSecret = $googleConfig['client_secret'];$redirectUri = $googleConfig['callBack'] = "https://vip.com/Google"; //当前项目回调地址// create Client Request to access Google API$client = new \Google_Client();$client->setClientId($clientID);$client->setClientSecret($clientSecret);$client->setRedirectUri($redirectUri);$client->addScope("email");$client->addScope("profile");// authenticate code from Google OAuth Flow$loginUrl = $client->createAuthUrl();$return['code'] = 1;$return['message'] = '获取成功';$return['data'] = array();$return['data']['url'] = $loginUrl;return json_encode($return,JSON_UNESCAPED_UNICODE); }
- 跳转之后 ,前端获取code 传给后台,读取邮箱相关信息
public function googleLogin(){global $db,$request,$comId;require_once 'inc/google_client/vendor/autoload.php'; // echo ABSPATH.'inc/google_client/vendor/autoload.php'; die;// require '../lib/internal/google-api-php-client--PHP7.0/vendor/autoload.php'; // $googleConfig = $this->snsaccount->googleAccount();$googleConfig = array("client_id"=>"客户端ID","project_id"=>"hudong",//项目名称"auth_uri"=>"https://accounts.google.com/o/oauth2/auth","token_uri"=>"https://oauth2.googleapis.com/token","auth_provider_x509_cert_url"=>"https://www.googleapis.com/oauth2/v1/certs","client_secret"=>"客户端秘钥","redirect_uris"=>["https://vip.com/Google"],//设置的回调结合 可以设置多个"javascript_origins"=>["https://vip.com"]//设置的获取JavaScript的来源配置 );$clientID = $googleConfig['client_id'];$clientSecret = $googleConfig['client_secret'];$redirectUri = $googleConfig['callBack'] = "https://tocmodels.com/Google"; //Google console redirect URI $client = new \Google_Client();$client->setClientId($clientID);$client->setClientSecret($clientSecret);$client->setRedirectUri($redirectUri);$client->addScope("email");$client->addScope("profile");$code = $request['code'];if(empty($code)) return '{"code":0,"message":"code为必传参数"}';$token = $client->fetchAccessTokenWithAuthCode($request['code']);// var_dump($token);if(isset($token['error'])) return '{"code":0,"message":"'.$token['error'].'"}';$client->setAccessToken($token['access_token']);// get profile info$google_oauth = new \Google_Service_Oauth2($client);$google_account_info = $google_oauth->userinfo->get();$email = $google_account_info->email;//谷歌邮箱$gid = $google_account_info->id;//谷歌id$gname = $google_account_info->name;//谷歌实名$image = $google_account_info->picture;//谷歌头像}private function httpGet($url) {$curl = curl_init();curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);curl_setopt($curl, CURLOPT_TIMEOUT, 500);curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);curl_setopt($curl, CURLOPT_URL, $url);$res = curl_exec($curl);curl_close($curl);return $res;}相关文章:
【第三方登录】Google邮箱
登录谷歌邮箱开发者 https://console.developers.google.com/ 先创建项目 我们用的web应用 设置回调 核心主要: 1.创建应用 2.创建客户端ID 3.设置域名和重定向URL 4.对外公开,这样所有的gmail邮箱 都能参与测试PHP代码实现 引入第三方包 h…...
oslo_config学习小结
2.配置文件加载方法 2.1基础 配置文件指的是文件以.conf,.ini结尾等内容为配置项的文件,配置文件内容格式一般为 [DEFAULT] option value [sectiona] optiona valuea optionb valueb [sectionb] optionc valuec optiond valued 2.2加载方法…...
SpringBoot2.6.3 + knife4j-openapi3
1.引入项目依赖: <dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi3-spring-boot-starter</artifactId><version>4.5.0</version> </dependency> 2.新增配置文件 import io.swag…...
PostgreSQL FDW(外部表) 简介
1、FDW: 外部表 背景 提供外部数据源的透明访问机制。PostgreSQL fdw(Foreign Data Wrapper)是一种外部访问接口,可以在PG数据库中创建外部表,用户访问的时候与访问本地表的方法一样,支持增删改查。 而数据则是存储在外部,外部可以是一个远程的pg数据库或者其他数据库(…...
Java项目:75 springboot房产销售系统
作者主页:源码空间codegym 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 使用房产销售系统分为管理员和用户、销售经理三个角色的权限子模块。 管理员所能使用的功能主要有:首页、个人中心、用户管理、销…...
2.6 IDE(集成开发环境)是什么
IDE(集成开发环境)是什么 IDE 是 Integrated Development Environment 的缩写,中文称为集成开发环境,用来表示辅助程序员开发的应用软件,是它们的一个总称。 通过前面章节的学习我们知道,运行 C 语言&…...
tomcat和web服务器是什么??
一、什么是服务器 1.服务器是计算机的一种,它比普通计算机运行更快、负载更高。服务器拥有独立IP地址,并且运行了服务器软件。 2.服务器由服务器软件和服务器硬件组成。服务器硬件就是拥有独立ip的计算机,服务器软件是一个被动的软件&#…...
鸿蒙Harmony跨模块交互
1. 模块分类介绍 鸿蒙系统的模块一共分为四种,包括HAP两种和共享包两种 HAP(Harmony Ability Package) Entry:项目的入口模块,每个项目都有且只有一个。feature:项目的功能模块,内部模式和En…...
由浅到深认识Java语言(30):集合
该文章Github地址:https://github.com/AntonyCheng/java-notes 在此介绍一下作者开源的SpringBoot项目初始化模板(Github仓库地址:https://github.com/AntonyCheng/spring-boot-init-template & CSDN文章地址:https://blog.c…...
Python学习笔记(二)
一:异常: 1.1:异常处理: 1.2:异常捕获: 1.3:异常传递: 二:模块: 2.1:模块的定义: 2.2:模块的导入: 2.3&…...
5.域控服务器都要备份哪些资料?如何备份DNS服务器?如何备份DHCP服务器?如何备份组策略?如何备份服务器状态的备份?
(2.1) NTD(域控数据库)备份 (2.2)DNS备份 (2.3)DHCP备份 (2.4)组策略备份 (2.5)CA证书备份 (2.6)系统状态备份 (2.1)…...
TCP与UDP:网络协议的技术原理与要点
文章目录 1. TCP(传输控制协议)1.1 面向连接1.1.1 三次握手1.1.2 为什么需要三次握手?1.1.3 四次挥手1.1.4 为什么需要四次挥手? 1.2 可靠性1.3 有序传输1.4 流量控制1.5 拥塞控制 2. UDP(用户数据报协议)2…...
vue-office/docx插件实现docx文件预览
1.下包 //预览docx文件 npm install vue-office/docx vue-demi//如果是vue2.6版本或以下还需要额外安装 vue/composition-api2.引入 <template><div>//在src填入文档地址<VueOfficeDocx srchttp://...../xx.docx style"width:80%" rendered"re…...
STM32—控制蜂鸣器(定时器)
目录 1 、 电路构成及原理图 2 、编写实现代码 main.c tim_irq.c 3、代码讲解 4、烧录到开发板调试、验证代码 5、检验效果 此笔记基于朗峰 STM32F103 系列全集成开发板的记录。 1 、 电路构成及原理图 定时器中断是利用定时器的计数功能(向上计数或向下计…...
【React】使用 JSX 为 JavaScript 添加标签
使用 JSX 为 JavaScript 添加标签实际上是将 JSX 语法与 JavaScript 代码结合使用,以描述用户界面。JSX 允许你在 JavaScript 中编写类似 HTML 的结构,并最终由 React 库将其转换为真正的 DOM 元素。以下是将标签引入 JavaScript 以及将 HTML 转化为 JSX…...
Docker构建多平台(x86,arm64)构架镜像
这里写自定义目录标题 背景配置buildx开启experimental重启检查 打包 背景 docker镜像需要支持不同平台架构 配置buildx 开启experimental vi /etc/docker/daemon.json {"experimental": true }或者 重启检查 # 验证buildx版本 docker buildx version# 重启do…...
python爬虫基础-----运算符(第三天)
🎈🎈作者主页: 喔的嘛呀🎈🎈 🎈🎈所属专栏:python爬虫学习🎈🎈 ✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天…...
Itextpdf电子签章
印章 印章是我国特有的历史文化产物,古代主要用作身份凭证和行驶职权的工具。它的起源是由于社会生活的实际需要。早在商周时代,印章就已经产生。如今的印章已成为一种独特的,融实用性和艺术性为一体的艺术瑰宝。传统的印章容易被坏人、小人…...
两台电脑简单的通信过程详解(经过两个路由器,不同网段)
一、eNSP拓扑图 二、配置4台电脑的IP地址、子网掩码、网关地址。 三、配置路由器 注意拓扑图的接口与本博客是否相符,判断以下命令中的ip是否需要修改。 1.AR1-接口对应IP <Huawei>sys #进入系统视图 [Huawei]int g0/0/0 #进入0/0/0接口 [Huawei-GigabitE…...
Java基于微信小程序的助农扶贫系统的研究与实现
博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇&#…...
Windows上的安卓应用安装神器:APK-Installer完全指南
Windows上的安卓应用安装神器:APK-Installer完全指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 想在Windows电脑上轻松安装安卓应用,又不想…...
如何用QrazyBox修复损坏的二维码:终极修复工具指南
如何用QrazyBox修复损坏的二维码:终极修复工具指南 【免费下载链接】qrazybox QR Code Analysis and Recovery Toolkit 项目地址: https://gitcode.com/gh_mirrors/qr/qrazybox 你是否曾遇到过打印模糊、水渍污染或屏幕划痕导致的二维码无法扫描?…...
2026年5款AI视频文案生成工具对比实测,批量口播脚本如何兼顾爆款逻辑与工程复用?
每天要写30条口播脚本,但爆款逻辑难复现一位MCN内容组长在CSDN发帖提问:‘团队6个编导轮班写口播稿,爆款率不到12%,新来的实习生连黄金三秒都卡不准;想上AI工具,结果生成的文案要么太泛、要么套话堆砌&…...
显存节省68%、训练加速2.3倍,DeepSeek-R1微调实测报告,中小团队必看的轻量化方案
更多请点击: https://intelliparadigm.com 第一章:DeepSeek-R1微调的轻量化价值与适用场景 DeepSeek-R1作为一款高性能开源推理模型,其架构设计天然支持参数高效微调(PEFT),在保持原始推理能力的同时显著降…...
告别卡顿等待:HiveWE魔兽争霸III地图编辑器完全指南
告别卡顿等待:HiveWE魔兽争霸III地图编辑器完全指南 【免费下载链接】HiveWE A Warcraft III world editor. 项目地址: https://gitcode.com/gh_mirrors/hi/HiveWE 还在为魔兽争霸III原版地图编辑器的缓慢加载和复杂操作而烦恼吗?HiveWE是一款专注…...
你的B站缓存视频为何变成“僵尸文件“?3步解锁离线观看自由
你的B站缓存视频为何变成"僵尸文件"?3步解锁离线观看自由 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否曾经兴奋地…...
AI教材生成新突破!低查重AI写教材工具,快速打造专业教材书稿!
写教材的过程,总能遇到“慢节奏”带来的各种困扰。虽然框架和材料已经准备好,但内容撰写却常常陷入瓶颈——一句话反复推敲半小时,总觉得不够完美;章节之间的衔接过渡,总是费尽脑筋也找不到合适的表述,创作…...
VSCode R扩展:如何在5分钟内搭建完整的R语言开发环境
VSCode R扩展:如何在5分钟内搭建完整的R语言开发环境 【免费下载链接】vscode-R R Extension for Visual Studio Code 项目地址: https://gitcode.com/gh_mirrors/vs/vscode-R 如果你正在寻找一个现代化的R语言开发工具,那么VSCode配合vscode-R扩…...
C#调用C++ DLL报错‘找不到指定的模块’根因与精准排查指南
1. 这个报错不是“找不到文件”,而是“找不到依赖”——C#调用C DLL时最典型的认知陷阱 “无法加载 DLL ‘xxx.dll’: 找不到指定的模块”——这行红色错误信息,几乎每个在Windows平台做混合编程的C#开发者都见过。它第一次出现时,很多人会本…...
小样本下分位数估计与置信区间构建实战指南
1. 项目概述:为什么小样本下的分位数估计如此重要?在机器学习项目的日常工作中,我们常常会面临一个尴尬的局面:模型训练好了,也跑出了几轮评估结果,比如准确率是92%,93%,91%…...
