【第三方登录】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技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇&#…...
告别“炼丹”:用ReVeal的GGNN+Triplet Loss实战代码漏洞检测,我踩过的坑你别踩
从理论到实践:ReVeal漏洞检测模型落地中的关键挑战与解决方案 在代码安全领域,深度学习技术的应用正经历着从实验室研究到工业落地的关键转折期。ReVeal作为近年来备受关注的漏洞检测框架,其结合GGNN图神经网络与Triplet Loss的创新设计&…...
寒冬降临:当资本撤出AI测试赛道
2026年初,全球资本市场对AI技术的狂热投资骤然降温。随着VC基金转向更保守的资产配置,依赖融资的AI测试工具开发商面临生存危机:初创公司批量裁员,开源项目停止维护,企业采购的智能测试平台因无法续约沦为“断线木偶”…...
突破3D打印障碍:SketchUp STL插件的技术革新与实践指南
突破3D打印障碍:SketchUp STL插件的技术革新与实践指南 【免费下载链接】sketchup-stl A SketchUp Ruby Extension that adds STL (STereoLithography) file format import and export. 项目地址: https://gitcode.com/gh_mirrors/sk/sketchup-stl 当一位产品…...
当相机位姿已知:利用COLMAP从稀疏到稠密重建的实战指南
1. 环境准备与数据格式转换 在开始COLMAP重建之前,我们需要确保环境配置正确,并完成相机位姿数据的格式转换。COLMAP支持Windows、Linux和macOS系统,但为了获得最佳性能,建议使用配备NVIDIA显卡的机器,并安装CUDA加速版…...
Pspice仿真新手避坑大全:为什么你的TL431仿真总报错?可能是模型库没加对
Pspice仿真新手避坑大全:为什么你的TL431仿真总报错? 刚接触Pspice的工程师们,是否经常遇到这样的场景:精心设计的TL431电路图明明检查了无数遍,点击仿真按钮后却弹出一堆令人困惑的错误提示?这就像拼好了乐…...
嵌入式开发必备:三大代码对比工具深度评测
1. 代码对比工具概述作为一名嵌入式开发工程师,我每天都要处理大量的代码修改和版本对比工作。在多年的开发实践中,我发现选择合适的代码对比工具能极大提升工作效率。虽然Beyond Compare是业内公认的标杆产品,但实际工作中我们还有更多选择&…...
从原理到代码:用Python实现简易变焦跟踪算法(OpenCV实战)
从原理到代码:用Python实现简易变焦跟踪算法(OpenCV实战) 在计算机视觉领域,变焦跟踪是一个既基础又关键的技术难题。想象一下,当你用手机拍摄远处景物时,镜头从广角切换到长焦的过程中,画面往往…...
SQLite3嵌入式开发实战:从零构建一个轻量级学生管理系统(C语言版)
SQLite3嵌入式开发实战:从零构建一个轻量级学生管理系统(C语言版) 在嵌入式系统开发中,数据存储和管理一直是开发者需要面对的核心问题之一。传统文件系统虽然简单,但缺乏结构化查询能力;而大型数据库又过…...
快速掌握C#语言基础知识点(17.委托)
关注我的动态 namespace _17.委托 {public delegate void doMyAction(); //委托,无参,无返回值public delegate int doPlus(int a, int b);//委托,有参,有返回值internal class Program{//委托成员变量public static doMyAction a…...
Qwerty Learner版本发布流程:从开发到上线的标准化
Qwerty Learner版本发布流程:从开发到上线的标准化 【免费下载链接】qwerty-learner 为键盘工作者设计的单词记忆与英语肌肉记忆锻炼软件 / Words learning and English muscle memory training software designed for keyboard workers 项目地址: https://gitcod…...
