前言

很多对外应用的开发都考虑接入第三方登录来提高用户的体验感,避免用户进行繁琐的注册登录(登录后的完善资料必不可免)。

而QQ、微信、支付宝、淘宝、微博等应用就是首选目标(无他,用户群体大,支持发开发者授权应用)。

可以点击下面的地址体验一下。

https://oauthlogin.net/

下面介绍基于OAuth2 的登录组件


1、创建项目

这里使用 GitHub 登录做演示,因为GitHub的 开发者应用程序 的创建支持localhost的方式访问,可以本地开发直接调用。

新建一个 Asp.Net Core Web 应用(模型-视图-控制器) 项目,项目名 GithubLogin (你也可以起一个其他的名称),选择 .Net Core 3.1 (长期支持)  后创建项目。

2、安装NuGet包

MrHuo.OAuth.Github

选择1.0.0进行安装

3、创建GitHub授权应用

入口1:

访问 https://github.com/settings/applications/new网站

注意:GitHub网站速度较慢,如果显示 无法访问此网站 刷新一下多执行几次,或者使用第二种入口注册。

入口2:

访问 https://github.com/ 进行登录,在右上角的头像图标旁边下拉点击设置 Settings

在出来的页面点击开发者设置  Developer settings  ,

选择 OAuth App 应用程序,点击 New OAuth App 创建OAuth应用程序

4、配置授权key

把界面里的 Client IDClient secret,连同上一个界面里填写的 Authorization callback URL 全部填写到配置文件对应位置。现在配置文件 appsettings.json 是这样的:

{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*",
"oauth": {
"github": {
"app_id": "c147cxxxxxxxxxxxxxxxxxxe6ea2", //OAuth App创建的Client ID
"app_key": "03ef6xxxxxxxxxbe6f4f0febef5", //OAuth App创建的Client secrets
"redirect_uri": "http://localhost:33180/oauth/githubcallback", //回调地址(这个地址是你自己写的,后面授权成功后做自己需要的功能)
"scope": "repo"
}
}
}

5、编写代码

在 Startup.cs 文件的ConfigureServices方法中注入组件:

services.AddSingleton(new GithubOAuth(OAuthConfig.LoadFrom(Configuration, "oauth:github")));

    // This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
//注入GitHub授权组件
services.AddSingleton(new GithubOAuth(OAuthConfig.LoadFrom(Configuration, "oauth:github")));
}

Controllers新建OAuthController.cs类,里面的代码如下:

using Microsoft.AspNetCore.Mvc;
using MrHuo.OAuth.Github;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks; namespace ThirdPartyLogin.Controllers
{
public class OAuthController : Controller
{
#region GitHub授权+回调
//发起第三方授权申请
[HttpGet("oauth/github")]
public IActionResult Github([FromServices] GithubOAuth githubOAuth)
{
return Redirect(githubOAuth.GetAuthorizeUrl());
} //第三方授权成功后回调方法
[HttpGet("oauth/githubcallback")]
public async Task<IActionResult> GithubCallback(
[FromServices] GithubOAuth githubOAuth,
[FromQuery] string code)
{
return Json(await githubOAuth.AuthorizeCallback(code));
}
#endregion
}
}

然后运行程序,在地址栏手动输入访问 发起第三方授权申请 的方法:http://localhost:33180/oauth/github 跳转到授权页面,

如下,点击绿色的按钮同意,然后授权成功,

成功后调用我们之前配置的回调方法,在这里我们就可以自定义操作了,入库或者其他。

授权成功返回的内容如下:

经过指定处理后,可视化显示为:

到这里一个简单的第三方GitHub授权指定网站登录就完成了,其他的授权都是大同小异,需要注意的是我们用到的组件需要去找一下,然后去各个平台申请一个key。

当然,我这里是白嫖的 开发者精选资讯大佬的,更多用法可以直接去下载demo下来看,最后附上链接,大家可以去看看

相关文献

 
欢迎关注订阅微信公众号【熊泽有话说】,更多好玩易学知识等你来取

作者:熊泽-学习中的苦与乐
公众号:熊泽有话说


出处:https://www.cnblogs.com/xiongze520/p/15039407.html



创作不易,任何人或团体、机构全部转载或者部分转载、摘录,请在文章明显位置注明作者和原文链接。

.netcore第三方登录授权:10分钟急速接入的更多相关文章

  1. apicloud 第三方登录授权、微信、扣扣、微博登录授权

    授权登录.接入第三方的配置 例如:微信的登录授权. 首先在模块里面添加 wx 这个模块,然后在项目的配置文件里面进行配置. 配置的时候要现在微信开放平台 https://open.weixin.qq. ...

  2. OAuth 第三方登录授权码(authorization code)方式的小例子

    假如上面的网站A,可以通过GitHub账号登录: 下面以OAuth其中一种方式,授权码(authorization code)方式为例. 一.第三方登录的原理 所谓第三方登录,实质就是 OAuth 授 ...

  3. Keycloak快速上手指南,只需10分钟即可接入Spring Boot/Vue前后端分离应用实现SSO单点登录

    登录及身份认证是现代web应用最基本的功能之一,对于企业内部的系统,多个系统往往希望有一套SSO服务对企业用户的登录及身份认证进行统一的管理,提升用户同时使用多个系统的体验,Keycloak正是为此种 ...

  4. 微信、QQ第三方登录授权时的问题总结

    一.微信第一个问题:redirect_uri域名与后台配置不一致,错误码:10003 解决方案: 1,首先确定访问的第三方接口地址参数前后顺序是否正确,redirect_uri回调地址是否加了http ...

  5. 解决微信公众号授权登录和开放平台微信第三方应用授权登录获取到的用户Openid关联问题

    开发背景: 最近一段时间一直在做关于微信方面的网站应用开发,这段时间也收获的不少关于微信开发方面的开发技能,接触的比较多的主要有微信公众号和微信网站app第三方登录授权,以及微信会员卡,优惠券和扫描二 ...

  6. IOS 集成第三方登录

    我使用的是友盟上集成的第三方登录功能,一共使用了三个应用的登录授权,QQ.微信.新浪微博.由于第三方登录授权成功后,需要跳转到一个新的界面,所以这里需要在项目里设置第三方登录的SSO授权.就是必须安装 ...

  7. 如何从零开始对接第三方登录(Java版):QQ登录和微博登录

    前言 个人网站最近增加了评论功能,为了方便用户不用注册就可以评论,对接了QQ和微博这2大常用软件的一键登录,总的来说其实都挺简单的,可能会有一点小坑,但不算多,完整记录下来方便后来人快速对接. 后台设 ...

  8. Django项目中使用qq第三方登录。

    使用qq登录的前提是已经在qq互联官网创建网站应用并获取到QQ互联中网站应用的APP ID和APP KEY 1,建路由 # qq登录 path('loginQq/',qq.loginQq,name=' ...

  9. JAVA实现QQ第三方登录

    首先在QQ互联: https://connect.qq.com/manage.html 申请账号,并且进行资料审核,同时创建应用(设置回调地址) 申请应用完后,会有app_ID.app_KEY等参数 ...

随机推荐

  1. 重型车辆盲区行为检查Behaviours – Heavy Vehicle Blind Spots

    重型车辆盲区行为检查Behaviours – Heavy Vehicle Blind Spots VISIBILITY AROUND HEAVY VEHICLES A blind spot is an ...

  2. 旷视MegEngine数据加载与处理

    旷视MegEngine数据加载与处理 在网络训练与测试中,数据的加载和预处理往往会耗费大量的精力. MegEngine 提供了一系列接口来规范化这些处理工作. 利用 Dataset 封装一个数据集 数 ...

  3. TensorRT 数据格式说明

    TensorRT数据格式说明 NVIDIA  TensorRT支持不同的数据格式.需要考虑两个方面:数据类型和布局. 数据类型格式 数据类型是每个单独值的表示.它的大小决定了数值的范围和表示的精度:分 ...

  4. 【逆向&编程实战】Metasploit安卓载荷运行流程分析_复现meterpreter模块接管shell

    /QQ:3496925334 作者:MG193.7 CNBLOG博客号:ALDYS4 未经许可,禁止转载/ 关于metasploit的安卓模块,前几次的博客我已经写了相应的分析和工具 [Android ...

  5. UF_LAYER 图层操作

    Open C uc5007uc5008uc5009UF_LAYER_ask_category_infoUF_LAYER_ask_category_tagUF_LAYER_ask_statusUF_LA ...

  6. What is maven?

    Introduction Maven, a Yiddish word meaning accumulator(累加器) of knowledge, began as an attempt to sim ...

  7. 2020年11月CKA新题考试心得体会

    1 什么是CKA CKA,即Certificated Kubernetes Administrator,CNCF官方提供的Kubernetes技能认证,含金量还是不错的.还有CKAD,相对简单一些,没 ...

  8. PL/SQL连不上,报 ORA-12170:TNS 连接超时

    排错步骤: 1.查看网络是否通畅 打开cmd, ping 数据库IP 2. 查看端口是否通畅 打开cmd,tnsping 数据库IP 如果piing不通,可能是防火墙问题 3.检查防火墙状态 #ser ...

  9. CentOS中按tab键不能自动补全问题解决办法

    CentOS中按tab键不能自动补全问题解决办法 一:检查一下系统有没有安装bash-completion包. 二:yum查找一下 三:yum安装bash-completion包 前言 在CentOS ...

  10. 6. QT国际化 translate QT语言家 翻译

    main. QTranslator *qtTranslator = new QTranslator(); if (IsChinese()) { qtTranslator->load(" ...