为什么原网站建设公司不愿意透露域名管理权限给客户ui培训机构北京

web/2025/10/2 4:35:56/文章来源:
为什么原网站建设公司不愿意透露域名管理权限给客户,ui培训机构北京,网站建设 的公,wordpress前端登录插件文章目录 网站授权QQ登录QQ登录的完整流程代码示例1. 添加依赖2. 配置文件3. 实现Service4. 创建Controller 网站授权QQ登录 首先需要去QQ互联申请应用填写网站的相关信息#xff0c;以及回调地址#xff0c;需要进行审核。申请流程暂时不说了#xff0c;百度一下挺多申请失… 文章目录 网站授权QQ登录QQ登录的完整流程代码示例1. 添加依赖2. 配置文件3. 实现Service4. 创建Controller 网站授权QQ登录 首先需要去QQ互联申请应用填写网站的相关信息以及回调地址需要进行审核。申请流程暂时不说了百度一下挺多申请失败案例的解决方案的你懂的现在越来越严格了甚至一个错别字都不让有。 QQ登录的完整流程 用户点击QQ登录 用户在你的前端页面点击QQ登录按钮,发送请求到后端。 重定向到QQ授权页面 后端也可以直接重定向到QQ的授权页面,也可以将授权页面的地址返回给前端, 由前端将用户重定向到QQ的授权页面授权页面的地址通常是一个URL类似于https://graph.qq.com/oauth2.0/authorize?response_typecodeclient_idYOUR_APP_IDredirect_uriYOUR_REDIRECT_URIstateYOUR_STATE 其中 YOUR_APP_ID你在QQ开放平台注册应用时获得的APP ID。YOUR_REDIRECT_URI你在QQ开放平台设置的回调URL。YOUR_STATE一个随机字符串用于防止CSRF攻击。 用户授权 用户在QQ的授权页面点击同意授权。 QQ重定向到回调URL 授权成功后QQ会将用户重定向到你设置的redirectUri并在回调地址的查询参数中加上一个code参数和原先的state。 前端获取code并验证state 前端从回调地址中解析出code参数。同时验证返回的state是否与最初发送的state一致以确保这不是一个CSRF攻击。 state参数也可以交给后端进行验证 这里的回调地址就是QQ互联上面写的回调地址,前端会在这个回调地址的页面发送请求给后端,同时携带code和state参数(这两个参数从回调地址里面取出来的) 前端向后端发送登录请求并携带code和state参数 前端发起请求将code和state发送到后端的/callback接口。 后端获取Access Token 后端使用code向QQ服务器请求访问令牌Access Token。这通常涉及到一个POST请求到https://graph.qq.com/oauth2.0/token带有code、YOUR_APP_ID、YOUR_APP_KEY你的应用密钥和YOUR_REDIRECT_URI作为参数。 后端获取OpenID 使用Access Token后端可以向QQ服务器请求OpenID这是一个代表QQ用户唯一标识的值。 后端获取用户信息 后端使用Access Token和OpenID请求QQ服务器以获取用户的基本信息。 创建或登录用户 后端可以使用从QQ获取的用户信息来 检查数据库中是否已经有一个与此QQ账户关联的用户。如果是则登录该用户。如果不是则创建一个新用户并与该QQ账户关联。 返回结果到前端 后端可以返回一个令牌如JWT或其他标识已登录用户的信息到前端。 前端处理登录状态 前端根据后端的响应处理用户的登录状态例如保存JWT显示用户的信息等。 代码示例 1. 添加依赖 在pom.xml中添加相关的依赖 !-- Spring Boot Web Starter: 提供了创建web应用所需要的所有必要依赖包括内嵌的Tomcat服务器 -- dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId /dependency!-- Apache HttpClient: 一个流行的库用于处理HTTP请求 -- dependencygroupIdorg.apache.httpcomponents/groupIdartifactIdhttpclient/artifactId /dependency!-- Jackson Databind: 用于将Java对象与JSON数据进行序列化和反序列化 -- dependencygroupIdcom.fasterxml.jackson.core/groupIdartifactIdjackson-databind/artifactId /dependency 2. 配置文件 在application.properties添加 qq.appIdYOUR_APP_ID qq.appKeyYOUR_APP_KEY qq.redirectUrihttp://yourdomain.com/auth/qq/callback3. 实现Service 创建一个QQAuthService用于处理与QQ的交互。 Service public class QQAuthService {// 从application.properties中读取配置值Value(${qq.appId})private String appId;Value(${qq.appKey})private String appKey;Value(${qq.redirectUri})private String redirectUri;// 创建一个可关闭的HTTP客户端用于发送请求private final CloseableHttpClient httpClient HttpClients.createDefault();/*** 获取Access Token* * param code 从QQ回调URL中获得的授权码* return 返回Access Token* throws IOException 处理HTTP请求可能会出现的IO异常*/public String getAccessToken(String code) throws IOException {// 构建获取Access Token的URLString url https://graph.qq.com/oauth2.0/token?grant_typeauthorization_codeclient_id appId client_secret appKey code code redirect_uri redirectUri;// 创建一个HttpGet请求HttpGet httpGet new HttpGet(url);// 执行该请求并获取响应CloseableHttpResponse response httpClient.execute(httpGet);// 将响应内容转换为字符串String responseStr EntityUtils.toString(response.getEntity());// 解析响应内容提取access_tokenString accessToken responseStr.split()[0].split()[1];return accessToken;}/*** 获取OpenID* * param accessToken Access Token* return 返回OpenID* throws IOException 处理HTTP请求可能会出现的IO异常*/public String getOpenId(String accessToken) throws IOException {// 构建获取OpenID的URLString url https://graph.qq.com/oauth2.0/me?access_token accessToken;// 创建一个HttpGet请求HttpGet httpGet new HttpGet(url);// 执行该请求并获取响应CloseableHttpResponse response httpClient.execute(httpGet);// 将响应内容转换为字符串String responseStr EntityUtils.toString(response.getEntity());// 解析响应内容提取openidString openId responseStr.substring(responseStr.lastIndexOf(:\) 2, responseStr.lastIndexOf(\}));return openId;}/*** 获取用户信息* * param accessToken Access Token* param openId OpenID* return 返回用户信息的JSON字符串* throws IOException 处理HTTP请求可能会出现的IO异常*/public String getUserInfo(String accessToken, String openId) throws IOException {// 构建获取用户信息的URLString url https://graph.qq.com/user/get_user_info?access_token accessToken oauth_consumer_key appId openid openId;// 创建一个HttpGet请求HttpGet httpGet new HttpGet(url);// 执行该请求并获取响应CloseableHttpResponse response httpClient.execute(httpGet);// 将响应内容转换为字符串String responseStr EntityUtils.toString(response.getEntity());// 直接返回用户信息的JSON字符串return responseStr; } } 4. 创建Controller RestController RequestMapping(/auth/qq) public class QQAuthController {Autowiredprivate QQAuthService qqAuthService;/*** 重定向用户到QQ登录页面。* * param response HttpServletResponse对象用于发送重定向。* param session HttpSession对象用于存储state。* throws IOException 如果重定向失败。*/GetMapping(/login)public void qqLogin(HttpServletResponse response, HttpSession session) throws IOException {// 生成并存储一个唯一的state值String state UUID.randomUUID().toString();session.setAttribute(qq_oauth_state, state);// 构建QQ授权的URLString url https://graph.qq.com/oauth2.0/authorize?response_typecodeclient_id appId redirect_uri URLEncoder.encode(redirectUri, UTF-8) state state;// 当你在移动端上请求登录时,可以在请求中带上displaymobile参数// 系统就会跳转到移动版的QQ登录页面为用户提供更好的体验if (mobile.equals(display)) {url displaymobile;}// 重定向到QQ授权页面response.sendRedirect(url);}/*** 处理QQ授权的回调请求。* * param code QQ授权返回的code。* param state QQ授权返回的state。* param session HttpSession对象用于验证state。* return 用户信息或错误消息。*/GetMapping(/callback)public String qqCallback(RequestParam String code, RequestParam String state, HttpSession session) {// 检查返回的state是否与存储的一致String storedState (String) session.getAttribute(qq_oauth_state);if (storedState null || !storedState.equals(state)) {return Error: state does not match;}try {// 获取并使用AccessToken和OpenIDString accessToken qqAuthService.getAccessToken(code);String openId qqAuthService.getOpenId(accessToken);String userInfo qqAuthService.getUserInfo(accessToken, openId);// 这里可以进行用户注册或登录操作// 这里可以根据用户是新用户还是老用户决定是注册后登录还是直接登录// 然后返回登录用户的信息return userInfo;} catch (IOException e) {return Error occurred during QQ auth: e.getMessage();}} }

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

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

相关文章

旅游网站内容规划特点wordpress会员可见

Windows基线安全检测-安全配置检测 前言 Windows在生产环境中是使用最多的一个系统,大部分为客户端,少部分为服务端; 然而其实很多用户对windows系统不是很了解,安全配置更是如此; 因此我们安全人员要定期对员工的主…

SEO案例网站建设江苏省建设厅官网网站

在JDK6及之前,使用永久代来实现方法区,字符串常量池(StringTable)是在永久代(方法区)中的,但是方法区的回收效率不高,在Full GC时才会回收。 在JDK7中,将字符串常量池转移到了堆中,分配在年轻代和老年代中。…

备案不关闭网站怎么样外贸网站建设信息

在前端开发中,项目体积优化是一个重要的环节,它直接影响到网页的加载速度和用户体验。随着前端项目越来越复杂,引入的依赖也越来越多,如何有效地减少最终打包文件的大小,成为了前端工程师需要面对的挑战。以下是一些常…

用wordpress建网站wordpress查询置顶文章

学习目标: 216.组合总和III 17.电话号码的字母组合 学习内容: 216.组合总和III 题目链接 &&文章讲解 找出所有相加之和为 n 的 k 个数的组合,且满足下列条件: 只使用数字1到9每个数字 最多使用一次 返回所有可能的有效…

天津怎样做网站推广慈溪网站建设网站推广

题意&#xff1a;给定一个n位的整数&#xff0c;要求从中去掉k位&#xff0c;使得剩下的数字最大。 思路&#xff1a;单调队列。在满足删除的数等于k 的前提下求一个不敌减的序列。 code&#xff1a; #include <iostream> #include <cstdio> #include <cmath>…

外国的免费网站网站深圳正规的保安公司

逻辑电路基本框架回顾 跨时钟域同步技术 读写操作相互独立时钟域 A 和 B 不需要一致的相位由专门逻辑控制读写操作的切换 高速数据的乒乓缓存技术

嘉兴网站制作哪家专业什么是营销型网站建设

HAL_CAN_RxFifo0MsgPendingCallback(CAN_HandleTypeDef *hcan) 是一个回调函数&#xff0c;通常在STM32的HAL库中用于处理CAN&#xff08;Controller Area Network&#xff09;接收FIFO 0中的消息。当CAN接口在FIFO 0中有待处理的消息时&#xff0c;这个函数会被调用。 HAL库C…

最有设计感的网站班级网站建设思路

文章目录 前言 1 安装SF45/B 2 连接自动驾驶仪 3 通过地面站进行配置 4 参数说明 前言 Lightware SF45/B 激光雷达(Lightware SF45/B lidar)是一种小型扫描激光雷达&#xff08;重约 50g&#xff09;&#xff0c;扫描度可达 350 度&#xff0c;扫描范围 50m。 1 安装SF45…

狮山公司网站建设acg大神做的网站

上一节我们在 host1 中运行了容器 bbox1&#xff0c;今天将详细讨论 overlay 网络跨主机通信的原理。 在 host2 中运行容器 bbox2&#xff1a; bbox2 IP 为 10.0.0.3&#xff0c;可以直接 ping bbox1&#xff1a; 可见 overlay 网络中的容器可以直接通信&#xff0c;同时 docke…

关于门户网站建设方案今晚8时兰州全面解封

目录 1. linux软件包管理器yum 1.1 什么是软件包 1.2 关于rzsz 1.3 注意事项 1.4 查看软件包 1.5 如何安装、卸载软件 1.6 centos 7设置成国内yum源 2. linux开发工具-Linux编辑器-vim使用 2.1 vim的基本概念 2.2 vim的基本操作 2.3 vim正常模式命令集 2.4 vim末行…

网站开发 慕课曼联vs曼联直播

给QWidget或者QDialog设置布局的时候方式很简单。创建好一个布局&#xff1a;mainLayout&#xff0c;然后不停地把各个控件往mainLayout里面放&#xff0c;最后调用setLayout(mainLayout)就行了。 QMainWindow中使用这个方法的时候却不管用&#xff0c;因为QMainWindow是默认有…

网站资源建设方案wordpress如何导入文章

基于FPGA的PID算法理论详解(1) 1 概述 比例-积分-微分(PID)控制是业内最常见的控制算法,在工业控制领域有很高的接受度。PID控制器的广泛应用得益于其在多种操作条件下稳定的性能,以及易操作的特性。工程师可以用简单直观的方式实现PID控制。PID控制有三个基本要件:比…

网站的搜索功能查域名138

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「嵌入式的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01; C的工作多种多样&#x…

深圳网站建设就q479185700顶上wordpress站点添加skype

MSBuild是一个用于构建、部署和测试.NET应用程序的命令行工具。它是微软开发工具包&#xff08;Microsoft Build Tools&#xff09;中的一部分&#xff0c;常用于自动化构建和发布过程。 可以使用MSBuild来构建Visual Studio项目或解决方案&#xff0c;并根据需要执行各种操作…

宣武成都网站建设如何用二级域名做网站布奏

BeanFactory 和 FactoryBean 是 Spring 框架中两个不同的概念&#xff0c;它们在对象的管理和创建过程中具有不同的角色和功能。下面是它们之间的区别&#xff1a; BeanFactory&#xff1a; BeanFactory 是 Spring 框架的核心接口之一&#xff0c;它是一个对象容器&#xff0c…

长尾词和关键词的区别win7优化教程

一&#xff1a;安装docker 1.先卸载旧docker apt-get remove docker docker-engine docker.io containerd runc PS&#xff1a;新开的虚拟机输入命令后是这样的。 2.更新软件包 在终端中执行以下命令来更新Ubuntu软件包列表和已安装软件的版本: sudo apt update sudo apt …

下载浙江平安建设信息系统网站怎样建设相亲网站

登录—专业IT笔试面试备考平台_牛客网 题目大意&#xff1a;给出两个长度为n的数组a&#xff0c;b&#xff0c;每次操作可以令一个数1&#xff0c;将a的一个子集A变成和b的一个子集B变成完全相同需要的最少操作数为C(A,B)&#xff0c;求对于a的所有子集对所有b的子集的C(A,B)的…

电子商务网站建设作业网站建设流程多少钱

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c=1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编程,高并发设计,Springboot和微服务,熟悉Linux,ESXI虚拟化以及云原生Docker和K8s…

设计师常用素材网站市妇联门户网站平台建设情况

一、输入框 1、字符型输入框&#xff1a; &#xff08;1&#xff09;字符型输入框&#xff1a;英文全角、英文半角、数字、空或者空格、特殊字符“~&#xff01;#&#xffe5;%……&*&#xff1f;[]{}”特别要注意单引号和&符号。禁止直接输入特殊字符时&#xff0c;…