首页 > 其他分享 >OAuth2.0授权-gitee授权码模式

OAuth2.0授权-gitee授权码模式

时间:2024-09-19 14:13:39浏览次数:7  
标签:code await gitee token 授权 OAuth2.0 页面

OAuth2.0授权验证-gitee授权码模式

本文主要介绍如何笔者自己是如何使用gitee提供的OAuth2.0协议完成授权验证并登录到自己的系统,完整模式如图
image

1、创建应用

打开gitee个人中心->第三方应用->创建应用

创建应用后在我的应用界面,查看已创建应用的Client ID和Client Secret

2、对接

如何对接呢?gitee提供了开放文档,打开任意一个gitee页面,到页脚部分,找到OpenAPI,这里就是gitee提供的开放文档了,下面开始根据文档进行对接

  • 1、回调地址

根据协议,我们必须设置一个回调地址,来接收认证中心反馈给我们的信息,由于我是使用了vue+.net前后端分离的架构。所以需要再vue项目中创建一个页面,配置路由,并放开访问权限,这个页面的主要作用是为了让用户感知授权过程、授权成功后,回调页面会接收到state和code并转发给callback接口,页面显示授权成功,并随后关闭页面

{
    path: "/oauth-callback",
    name: "Callback",
    component: () => import("@/views/login/Callback.vue"),
    meta: {
      title: "认证中心回调页面",
      showLink: false,
      rank: 101
    }
  }
  • 2、callback接口

接收由步骤1传递过来的参数,并根据规则解析state,根据code参数,调用官方提供的api获取token,当拿到token后,就可以调用其他api了,也可以对token进行保存等其他操作。

var giteeTokenResult = await "https://gitee.com/oauth/token"
    .SetQueryParams(new { grant_type = "authorization_code", code = input.Code, client_id = authorizationCenter.ClientId, redirect_uri = authorizationCenter.RedirectUri, client_secret = authorizationCenter.ClientSecret })
    .PostAsync()
    .ReceiveJson<GiteeTokenResult>();

我们这里调用了获取用户信息的接口,根据反馈的用户信息,去后面的逻辑

oAuth2UserInfo = await "https://gitee.com/api/v5/user"
    .WithHeader("User-Agent", "purest-admin")
    .SetQueryParams(new { access_token = giteeTokenResult.AccessToken })
    .GetJsonAsync<OAuth2UserInfo>();
oAuth2UserInfo.Type = OAuth2TypeConst.GITEE;
  • 3 用户注册以及绑定

当检测到系统中存在此认证用户后,检查是否有绑定本项目的用户,如果有直接返回token。登录到首页,如果没有则去绑定或注册

  var oAuth2User = await _oAuth2UserManager.GetOAuth2UserPersistenceIdAsync(oAuth2UserInfo);
  if (oAuth2User.UserId.HasValue)
  {
      var (accessToken, userInfo) = await GetTokenAndUserInfoAsync(oAuth2User.UserId.Value);
      await _hubContext.Clients.Client(stateInfo.ConnectionId).NoticeRedirect(accessToken, userInfo);
  }
  else
      await _hubContext.Clients.Client(stateInfo.ConnectionId).NoticeRegister(oAuth2User.PersistenceId);

3、测试

image

4、总结

gitee接入没遇到什么特别的问题,按部就班就完成了。接口如果调用异常,基本都是因为访问权限的问题,酌情处理吧

最后附上项目地址,如果您觉得还行,麻烦给个star吧。您的鼓励是我坚持更新的动力!

gitee:https://gitee.com/dymproject/purest-admin

github: https://github.com/dymproject/purest-admin

标签:code,await,gitee,token,授权,OAuth2.0,页面
From: https://www.cnblogs.com/holyading/p/18420448

相关文章

  • 高可用!一个基于 SpingBoot + Oauth2 的单点认证授权中心!
    大家好,我是Java陈序员。现代企业中,往往包含多个系统,如果每个系统都需要登录注册,这样的用户体验很不好!这时,就需要设计一个单点登录系统,一次登录处处登录,一次退出处处退出!今天,给大家介绍一个基于SpingBoot+Oauth2的单点认证授权中心,支持分布式高可用!关注微信公众号:【Java......
  • 使用gitee的webhook实现提交代码后自动部署项目
    独立站原文业务背景giteeAction付费,gitPages也停止了服务,没办法想搞一个国内服务器的独立站只能自己动手了,看了gitee提供了webhook......
  • 免弹窗、预授权,默认界面扫码能力打造系统级扫码体验
    二维码如今是移动应用流量入口以及功能实现的重要工具,也是各App的流量入口,使用场景愈加丰富,广泛应用于支付、出行、餐饮、生活服务、智慧生活、零售及广告营销等主流场景。然而,在实际生活中,扫码环境如光照强度、扫码角度、距离等,相机功能如缩放、对焦、曝光等和码图本身完整程度......
  • zblog提示“授权文件非法“的终极解决办法
    当遇到Z-Blog提示“授权文件非法”的问题时,这通常意味着Z-Blog在验证授权文件时发现了问题。这种情况可能是由于授权文件的损坏、不匹配或者是插件/主题的安装过程出现了问题。以下是解决这一问题的一些步骤:1.停用相关插件问题描述:插件管理出现问题。解决方法:登录Z-Bl......
  • zblog网站提示“授权文件非法“的终极解决办法
    当遇到Z-Blog提示“授权文件非法”的问题时,这通常意味着Z-Blog在验证某个插件或主题的授权状态时遇到了问题。以下是解决这一问题的一些步骤:1.停用“应用中心”插件问题描述:授权文件可能与应用中心插件冲突。解决方法:登录Z-Blog后台,进入插件管理。找到“应用中心”......
  • zblog报错“授权文件非法”的错误原因和解决办法
    当Z-Blog报错“授权文件非法”时,这通常意味着Z-Blog在验证某个插件或主题的授权状态时遇到了问题。以下是一些可能的原因及其相应的解决办法:可能的原因及解决办法1.授权文件损坏或丢失解决方法:检查授权文件是否完整且存在于正确的目录下。如果文件损坏或丢失,请重新获......
  • 微信授权登录接口开发
    微信登陆过程在项目开发中,难免会遇到微信授权登录这一操作,本讲来讲一下微信登陆是如何实现的?关于校验登录,有诸多方法,记录方法如下:使用SpringMVC提供的拦截器网关服务全局过滤器使用AOP面向横切面实现对于使用SpringMVC提供的拦截器来实现,其大致的思路如下:注意:用户......
  • git(一)——基本概念+使用教程+基本命令+以及和gitee关联
    首先来了解一下gitGit是一种分布式版本控制系统,用于跟踪和管理代码的变化。它由林纳斯·托瓦兹(LinusTorvalds)于2005年为了管理Linux内核的开发而开发。Git因其高效、灵活和易于学习的特点,迅速成为软件开发中最受欢迎的版本控制系统之一.Git的主要特点:1. **分布式**: ......
  • 如何为微信小程序添加微信登录和微信授权功能
    如何为微信小程序添加微信登录和微信授权功能1.快速入门:微信登录的魔法登录按钮:如何在小程序中添加微信登录按钮授权协议:用户授权与隐私保护的重要性一键登录:实现微信一键登录的步骤2.身份验证:确保用户信息的真实性临时登录:微信提供的临时登录凭证机制用户校验:如何验......
  • asp.net core的授权过滤器中获取action上的Attribute
    今天在做权限开发的时候,在控制器的方法上添加了一些特性,希望在过滤器中获取到这些特性,查找了一些资料,终于找到了办法:varaction=context.ActionDescriptorasControllerActionDescriptor;varpermission=action.MethodInfo.GetCustomAttribute<PermissionAttribute>();......