【第三方登录】Google邮箱

news2024/9/20 9:42:56

登录谷歌邮箱开发者

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;
    }


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1544181.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

智慧园区楼宇AI解决方案

背景 人工智能对于人类的影响要比工业革命发生的速度快10倍,规模大 300倍,影响几乎大3000倍 - 麦肯锡全球研究院;2017年7月20日,国务院印发《新一代人工智能发展规划》,首次把人工智能发展上升为国家战略层面,全面布局面向2030年的中国人工智能发展整体规划;中美同时进…

解密Google Cloud 全新 PaLM2及创新应用

📸背景 因长期在大模型相关的部门工作,每天接收到很多和AI相关的信息,但小编意识到目前理解到的一些AI知识还有些片面。 恰逢稀土掘金开发者大会有谈到大模型相关的知识,于是借此机会,对大模型相关的一些知识再了解一…

GuLi商城-商品服务-API-三级分类-查询-树形展示三级分类数据

1、网关服务配置路由 2、商品服务 3、启动本地nacos&#xff0c;打开nacos地址看nacos服务列表 4、编写VUE <template> <el-tree :data"menus" :props"defaultProps" node-click"handleNodeClick"></el-tree> </template…

【自我提升】计算机领域相关证书

目录 计算机技术与软件专业资格&#xff08;水平&#xff09;考试证书&#xff08;软考&#xff09;Oracle认证Cisco认证微软认证红帽认证AWS认证 计算机技术与软件专业资格&#xff08;水平&#xff09;考试证书&#xff08;软考&#xff09; 计算机技术与软件专业技术资格&a…

做自配送平台,商家如何发单?平台可以接收那些订单?

为了增加品牌曝光&#xff0c;许多商家选择加入外卖平台&#xff0c;然而随着时间推移&#xff0c;一些问题也逐渐显现&#xff1a;大平台对商家的配送抽佣越来越高&#xff0c;很多商家都选择自配送来降本增效。 但是问题来了&#xff01;目前市面上没有一款产品是自动发单到…

栈应用之---括号匹配

题意描述&#xff1a; 在算术表达式中&#xff0c;除了加、减、乘、除等运算外&#xff0c;往往还有括号。包括有大括号{}&#xff0c;中括号[]&#xff0c;小括号()&#xff0c;尖括号<>等。 对于每一对括号&#xff0c;必须先左边括号&#xff0c;然后右边括号&#xf…

【Excel表格中如何将单元格数据复制粘贴到合并后的单元格中】

要实现的效果如下&#xff1a; 方法一、使用插件 1、下载“方方格子”插件 下载地址&#xff1a;http://www.ffcell.com/home/ffcell.aspx 2、下载完成后&#xff0c;启动WPS或Excel软件&#xff0c;同意添加插件&#xff0c;选择【方方格子】-【复制粘贴】-【复制到合并区域…

现代化应用部署工具-Docker

Docker 简介 什么是Docker Docker 是一个开源的应用容器引擎&#xff0c;可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&#xff0c;然后发布到任何流行的 Linux 机器上。 Docker部署的优势 通过使用Docker等容器技术&#xff0c;可以将应用程序及其依赖项…

安卓转鸿蒙竟如此丝滑

随着鸿蒙的爆火&#xff0c;大家都想知道鸿蒙能不能搞&#xff1f; 相信大家搞开发的&#xff0c;都多多少少的了解过鸿蒙。近几个月鸿蒙的大动作也不少&#xff0c;如&#xff1a;重庆市近20个垂域应用与鸿蒙原生合作、深圳制定鸿蒙《行动计划》、阿里再次与鸿蒙展开合作&…

学习次模函数-第1章 引言

许多组合优化问题可以被转换为集合函数的最小化&#xff0c;集合函数是在给定基集合的子集的集合上定义的函数。同样地&#xff0c;它们可以被定义为超立方体的顶点上的函数&#xff0c;即&#xff0c;其中是基集合的基数-它们通常被称为伪布尔函数[27]。在这些集合函数中&…

“大变局开启”!比特币出现“资金出逃”!以太币ETF获批“乌云重重”!

比特币(BTC)在周(24)日最低来到63772美元之后&#xff0c;就持续震荡上涨。今(25)晨七点左右最高更逼近67628美元。以太坊(ETH)走势与BTC接近&#xff0c;清晨最高触及3471美元之后有所回调。 对于比特币的疲惫走势&#xff0c;业内人士指出&#xff0c;近期比特币价格创下新高…

OSCP靶场--Cockpit--待续

OSCP靶场–Cockpit 考点(sql注入绕过sudo tar提权) 1.nmap扫描 ## ┌──(root㉿kali)-[~/Desktop] └─# nmap 192.168.229.10 -Pn -sV -sC --min-rate 2500 Starting Nmap 7.92 ( https://nmap.org ) at 2024-03-25 01:40 EDT Nmap scan report for 192.168.…

向上生长

&#xff08;1&#xff09; 我记得2010年&#xff0c;在中国的苹果应用商店里&#xff0c;充斥的App还有很多&#xff1a;日历App、天气App、电池省电App、记事本App…。但这已经过去了2007-2008-2009三年&#xff0c;这些应用仍然很欢。 我有一个朋友算是中国最早一批开发iOS …

promethus的安装使用

1、# 软件下载地址 https://prometheus.io/download/ https://grafana.com/grafana/download https://prometheus.io/download/ Prometheus是一套开源的监控&报警&时间序列数据库的组合,起始是由SoundCloud公司开发的。 Prometheus 的优点 1、非常少的外部依赖,安装…

普通员工如何快速成为领导 管理与领导的区别 你有想过你缺哪?

一切为了生存。 我的总结&#xff08;我居然从来没想过&#xff09; 1、领袖&#xff1a;领人导事。规划能力&#xff0c;画饼&#xff0c;对结果赏罚。用人&#xff0c;什么人能放心干成。 2、管理&#xff1a;管人理事。对人清楚&#xff0c;对事清楚。 3、通用能力&#x…

今日大模型论文 || 清华微软联合打造LLMLingua2,速度提升达2.9倍

引言&#xff1a;探索任务无关的提示压缩技术 在大型语言模型&#xff08;LLMs&#xff09;的应用中&#xff0c;提示&#xff08;prompts&#xff09;的使用已成为一种常见的技术&#xff0c;它通过丰富而信息量大的提示来处理复杂和多样化的任务。然而&#xff0c;这些提示往…

STL ④ —— 哈希

1. 散列表 根据 key 计算 key 在表中的位置的数据结构&#xff1b;是 key 和其所在存储地址的映射关系&#xff0c;即 hash(key) % size index struct node{void *key;void *value;struct node *next; };2. hash函数 2.1 hash函数的特点 计算速度快强随机分布性&#xff0…

013_Linux(上传rz,下载sz,tar,zip,unzip)

目录 一、上传、下载 1、通过鼠标操作 &#xff08;1&#xff09;下载 &#xff08;2&#xff09;上传 2、通过命令操作 rz、sz &#xff08;1&#xff09;下载 sz &#xff08;2&#xff09;上传 rz 二、压缩、解压 1、tar命令 &#xff08;1&#xff09;压缩 &…

成为创作者的第 730 天——创作纪念日

​​ 文章目录 &#x1f4e8; 官方致信&#x1f3af;我的第一篇文章&#x1f9e9; 机缘与成长 &#x1f3af; 成就&#x1f3af; 目标 &#x1f4e8; 官方致信 今天早上打开 CSDN 私信一看&#xff0c;看到了这一条消息&#xff0c;然后看了下日期。突然感慨到&#xff0c;是…

正式发布:VitePress 1.0 现代化静态站点生成器!

大家好&#xff0c;我是奇兵&#xff0c;今天介绍一下现代化静态站点生成器!&#xff0c;希望能帮到大家。 3 月 21 日&#xff0c; 由 Vue 团队出品的现代化静态站点生成器 VitePress 正式发布 1.0 版本&#xff01;它专为构建快速、以内容为中心的网站而生&#xff0c;能够轻…