广告
返回顶部
首页 > 资讯 > 后端开发 > ASP.NET >.Net Core实现第三方QQ扫码登录
  • 355
分享到

.Net Core实现第三方QQ扫码登录

2024-04-02 19:04:59 355人浏览 泡泡鱼
摘要

目录效果展示:核心实现展示二维码解析扫码结果登录视图登录授权配置Cookie认证策略创建用户登录标识用户退出登录代码开源效果展示: 核心实现 展示二维码 public static

效果展示:

核心实现

展示二维码

public static (Stream, string) GetLoginQrCode()
{
    var uri = new Uri(QrCodeUrl);
    var request = new HttpRequestMessage(HttpMethod.Get, uri);
    var cookieContainer = new CookieContainer();
    var handler = new HttpClientHandler
    {
        CookieContainer = cookieContainer,
        AllowAutoRedirect = true,
        UseCookies = true
    };
    using var client = new HttpClient(handler);
    var response = client.Send(request);
    var stream = response.Content.ReadAsStreamAsync().Result;
    var cookies = cookieContainer.GetCookies(uri).ToList();
    var qrsig = cookies.FirstOrDefault(x => x.Name == "qrsig")?.Value;
    return (stream, qrsig);
}

解析扫码结果

public static (bool, string, ScanResult) GetQqScanResult(string qrsig)
{
    var timeStamp = GetTimeStamp();
    var ptqrToken = ParsePtqrToken(qrsig);
    var uri = new Uri(string.FORMat(ScanResultUrl, ptqrToken, timeStamp));
    var request = new HttpRequestMessage(HttpMethod.Get, uri);
    var cookieContainer = new CookieContainer();
    cookieContainer.Add(new Cookie("qrsig", qrsig) { Domain = uri.Host });
    var handler = new HttpClientHandler
    {
        CookieContainer = cookieContainer,
        AllowAutoRedirect = true,
        UseCookies = true
    };
    using var client = new HttpClient(handler);
    var response = client.Send(request);
    var content = response.Content.ReadAsStringAsync().Result;
    var result = ParsePtuiCbResult(content);
    return result[0] == "0" ? (true, result[4], new ScanResult(ParseQqNumber(result[2]), result[5])) : (false, result[4], null);
}

登录视图

<h1>QQ Scan Login</h1>

<img src="@Url.Action("QrCode")" width="350" alt="二维码失效?点击刷新" onclick="javascript:this.src += '?_t='+ Math.random();" style="cursor: pointer;" />

<h1>QQ Scan Result</h1>

<textarea rows="3" cols="45" id="result"></textarea>

<form asp-action="Login" method="post" id="loginForm">
    <input type="hidden" name="nick" id="nickName" />
    <input type="hidden" name="number" id="qqNumber" />
</form>

登录授权

配置Cookie认证策略

services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
    .AddCookie(options =>
    {
        // options.Cookie.HttpOnly = true;
        // options.ExpireTimeSpan = TimeSpan.FromHours(2);
        // options.SlidingExpiration = true;

        options.LoginPath = "/Account/Login";
        options.AccessDeniedPath = "/Account/Login";
    });

不要忘记使用策略: app.UseAuthentication();

创建用户登录标识

if (ModelState.IsValid)
{
    // 创建用户登录标识,Cookie名称与IServiceCollection中配置的一样即可
    var identity = new ClaimsIdentity(CookieAuthenticationDefaults.AuthenticationScheme);
    // 添加之后,可使用User.Identity.Name获取该值
    identity.AddClaim(new Claim(ClaimTypes.Name, model.Nick));
    // identity中还可以添加自定义数据
    identity.AddClaim(new Claim("qq", model.Number));
    // var customValue = User.Claims.SingleOrDefault(s => s.Type == "qq").Value;
    await HttpContext.SignInAsync(new ClaimsPrincipal(identity));

    return Redirect("~/");
}

用户退出登录

await HttpContext.SignOutAsync();

代码开源

https://GitHub.com/Run2948/QQScanLogin

到此这篇关于.net core实现第三方QQ扫码登录的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: .Net Core实现第三方QQ扫码登录

本文链接: https://www.lsjlt.com/news/139636.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • .Net Core实现第三方QQ扫码登录
    目录效果展示:核心实现展示二维码解析扫码结果登录视图登录授权配置Cookie认证策略创建用户登录标识用户退出登录代码开源效果展示: 核心实现 展示二维码 public static...
    99+
    2022-11-13
  • web实现QQ第三方登录
    要实现QQ第三方登录,可以按照以下步骤进行:1. 注册QQ互联开发者账号:前往QQ互联开发者平台(https://connect.q...
    99+
    2023-09-23
    web
  • Android中怎么实现第三方QQ登录
    本篇文章给大家分享的是有关Android中怎么实现第三方QQ登录,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。第三方登录之QQ代码区public class ...
    99+
    2023-05-30
    android
  • Android第三方登录之腾讯QQ登录的实例代码
    布局文件<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="登录成功" androi...
    99+
    2023-05-31
    android 第三方登录
  • PHP怎么实现扫码登录QQ
    本教程操作环境:Windows7系统、PHP8.1版、Dell G3电脑。PHP怎么实现扫码登录QQ?分享一下,PHP实现第四方QQ微信扫码登陆,不接入qq互联以及微信开发者平台就可以实现用户对接鹅厂,phpQQ微信扫码登陆 自己抓的QQ包...
    99+
    2022-11-21
    qq php
  • PHP如何实现扫码登录QQ
    这篇文章主要介绍“PHP如何实现扫码登录QQ”,在日常操作中,相信很多人在PHP如何实现扫码登录QQ问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”PHP如何实现扫码登录QQ”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-07-04
  • Android调用第三方QQ登录代码分享
    本文为大家分享了调用QQ登录的相关代码,希望对大家有帮助,减少项目开发的时间,具体内容如下 1、去QQ开放平台注册帐号(http://open.qq.com/),为应用申请QQ...
    99+
    2022-06-06
    Android
  • Django之第三方平台QQ授权登录的实现
    目录环境准备创建QQ互联应用创建应用模块定义QQ登录模型类执行迁移QQLoginTool库API使用说明QQ登录扫码页面认证获取openidopenid的判断处理openid是否绑定...
    99+
    2023-05-19
    Django 第三方平台QQ授权登录 Django 授权登录
  • PHP-钉钉扫码登录对接第三方网站
    这个小功能对于企业内部的一些自用后台网站还是很常用的,对接也相对简单,记录下对接流程。 开发文档:扫码登录第三方网站 - 钉钉开放平台 先登录钉钉开发者后台,创建扫码登录应用授权 开发者后台统一登录 - 钉钉统一身份认证   生成登录用...
    99+
    2023-08-31
    php
  • 微信第三方登录Android实现代码
    记录一下微信第三方实现登录的方法。还是比较简单。 一、必要的准备工作 1.首先需要注册并被审核通过的微信开放平台帐号,然后创建一个移动应用,也需要被审核; 2.然后到资源...
    99+
    2022-06-06
    微信第三方 Android
  • springboot网站应用使用第三方qq登录的实现过程
    使用第三方qq登录需要在QQ互联官网https://connect.qq.com/中申请成功才可以使用。 1.登录成功后进入个人设置中心设置个人信息 2.选择公司或个人接入,这里我...
    99+
    2022-11-12
  • 实现 Google 第三方授权登录
    最近做项目要实现Google的第三方登录,这简单的记录一下。 目前Google的第三方登录有很多方案,且官方提供SDK方便接入。但是我这个项目同时要实现网页和客户端。所以选择了 Google OAuth 2.0 的方案。 当然,也可以 《...
    99+
    2023-10-07
    服务器 前端
  • Vue实现Google第三方登录的示例代码
    目录一、开发者平台配置解决问题BUG一、开发者平台配置 1、进入开发者平台,首先前往Google API 控制台选择或者创建一个项目 谷歌开发者平台 一堆眼花缭乱的API让你...
    99+
    2022-11-12
  • 第三方网站微信登录java代码实现
    前两个星期在公司中的项目加上了微信登录、绑定的功能,在这里做个记录!一、开发前知识微信开放平台与微信公众平台的区别 1.1 微信公众平台:   ① 地址:https://mp.weixin.qq.com/cgi-bin/loginpage&...
    99+
    2023-05-31
    java 网站 微信登录
  • Vue如何实现Google第三方登录
    这篇文章主要介绍了Vue如何实现Google第三方登录的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Vue如何实现Google第三方登录文章都会有所收获,下面我们一起来看看吧。...
    99+
    2022-10-19
  • node如何实现github第三方登录
    这篇文章主要介绍了node如何实现github第三方登录的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇node如何实现github第三方登录文章都会有所收获,下面我们一起来看看吧。一、详细流程二、具体流程1.注...
    99+
    2023-07-04
  • Java中怎么实现第三方应用登录
    这篇文章给大家介绍Java中怎么实现第三方应用登录,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。什么是OAuth3.0OAuth是一项协议,它为用户资源的授权提供了一个安全、开放而简易的标准,OAuth的授权不会使第三...
    99+
    2023-06-20
  • 原生java代码实现码云第三方验证登录的示例代码
    目录码云第三方验证登录一、在码云上创建应用1、在码云上注册一个账号,点击右上角设置2、创建应用3、填写资料4、获取到clientId以及client Secret二、在项目中实现第三...
    99+
    2022-11-12
  • Android实现使用微信登录第三方APP的方法
    本文实例讲述了Android实现使用微信登录第三方APP的方法。分享给大家供大家参考,具体如下: 使用微信登录APP,免去注册过程,现在已经有很多的类似应用了。集成该功能过程不...
    99+
    2022-06-06
    方法 app Android
  • vue3微信扫码登录及获取个人信息实现的三种方法
    目录一、流程:二、前置条件:三、具体登录实现实现方式一:方式二:方式三:结合后端获取到二维码四、登录微信后获取微信中用户头像和昵称一、流程: 微信提供的扫码方式有两种,分别是: 跳转...
    99+
    2023-03-02
    vue3 微信扫码登录 vue3 微信获取信息
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作