当前位置: 首页 > news >正文

网站制作成功后怎么使用龙港 网站建设

网站制作成功后怎么使用,龙港 网站建设,北京装修公司口碑十大排名,没有货源如何做电商文章目录 网站授权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.pierceye.com/news/164463/

相关文章:

  • 义乌个人兼职做建设网站做网站月收入多少
  • 福州网站seo优化公司徐州百度运营中心
  • 做网站需要用到ps吗中国十大最强装饰公司
  • 网站建设盈利去除wordpress rss图标
  • 网站策划书的基本内容东莞工程建设交易中心网
  • 免费推广网站入口2022静态网站开发外文文献
  • 如何做服装微商城网站建设网站开发设计中的收获
  • 网站开发详细设计文档模板网站建设设计工具
  • 网站建设项目资金申请wordpress主题美容
  • 专门做财经的网站软件开发都有哪些项目
  • 湛江网站制作多少钱建网站程序工具
  • 四川省乐山市建设银行网站一级门户网站建设费用
  • 六安网站制作哪里有网站备案网站
  • 石家庄手机网站建设公司wordpress媒体库难用
  • wordpress上传完了周口seo 网站
  • 广州网站建设技术方案建设宠物网站的目的
  • 邢台网站维护网络营销推广方法及分类
  • 做网站买过域名之后门户网站建设公司报价
  • 广告网站设计公司好吗重庆在线app
  • 深圳网站建设哪家公司便宜网站一般用什么语言做
  • 网站平台建设所需开发工具成都麦卡网络做网站开发怎么样
  • 可以做网站的电脑软件济南网页设计
  • 推广网站制作网站建设代理怎么做
  • 做网站页面遇到的问题网站规划设计的步骤
  • 请人做网站要多少钱做视频网站代码
  • 厦门建设网站的公司苏州外贸公司网站建设流程图
  • php做的静态网站怎么加密seo是什么工作
  • 溧水网站建设建立什么指标体系和评价程序规范
  • 怎样向顾客电销网站建设一号网站建设
  • 平陆县做网站移动网站开发的视频下载