第三方 OAuth2 授权登录,QQ、微信开放平台(Weixin)、微信公众平台(WeixinMP)、微博(Weibo)、淘宝(Taobao)、支付宝(Alipay)、钉钉(DingTalk)、飞书(Feishu)、华为(Huawei)、小米(Xiaomi)、AtomGit、码云(Gitee)、GitHub、GitLab、微软(Microsoft )、StackOverflow、谷歌(Google)、ORCID
Install-Package Netnr.Login
三方 | 参考文档 | 应用申请(已登录) |
---|---|---|
参考文档 | 应用申请 | |
参考文档 | 应用申请 | |
参考文档 | 应用申请 | |
参考文档 | 应用申请 | |
参考文档 | 应用申请 | |
参考文档 | 应用申请 | |
参考文档 | 应用申请 | |
参考文档 | 应用申请 | |
参考文档 | 应用申请 | |
参考文档 | 应用申请 | |
参考文档 | 应用申请 | |
参考文档 | 应用申请 | |
参考文档 | 应用申请 | |
参考文档 | 应用申请 | |
参考文档 | 应用申请 | |
参考文档 | 应用申请 | |
参考文档 | 应用申请 | |
参考文档 | 应用申请 |
v5 版本全面重写,不兼容以前,调用方法更简单简洁
移除 Newtonsoft.Json 组件,改为 System.Text.Json
微软含新旧模式(注意新旧版本标识不相同)
钉钉含新旧模式(新:企业内部开发 H5微应用;旧:移动应用接入 扫码登录)
新增 AtomGit、ORCID、GitLab
删除 字段 PublicUserResult.Gender
修改 字段 PublicUserResult.Intro
为 Bio
新增 华为 小米
修复 微博获取唯一标识的错误,v5旧版本微博都有问题 严重缺陷
调整 PublicUserResult 类属性字段为 OpenId(有值,应用唯一)、UnionId(可能有值,跨应用唯一)
新增 PublicUserResult 类方法 GetId() => UnionId ?? OpenId;
v4 旧版本使用示例 Netnr.Demo/Controllers/LoginController.cs
极简调用,详情参考 Netnr.Demo/Controllers/AccountController.cs
// 初始化配置,推荐使用 LoginTo.InitConfig 方法读取配置
QQ.AppId = "";
QQ.AppKey = "";
QQ.Redirect_Uri = "https://localhost/account/authcallback/qq";
/// <summary>
/// 登录、绑定
/// </summary>
/// <param name="id">哪家</param>
/// <returns></returns>
[HttpGet]
public IActionResult Auth([FromRoute] LoginWhich? id)
{
if (id.HasValue)
{
//根据 state 字段加前缀 login 或 bind 来区分
DocModel authResult = LoginTo.EntryOfStep<object, object>(id.Value, LoginStep.Authorize, stateCall: (state) => $"login_{state}");
if (!string.IsNullOrEmpty(authResult.Raw))
{
return Redirect(authResult.Raw);
}
}
return BadRequest();
}
/// <summary>
/// 回调
/// </summary>
/// <param name="id">哪家</param>
/// <param name="authResult">接收授权码</param>
/// <returns></returns>
[HttpGet]
public IActionResult AuthCallback([FromRoute] LoginWhich id, AuthorizeResult authResult)
{
//极简拿到最终用户信息,参考详情可得到步骤信息
var publicUser = LoginTo.Entry(id, authResult);
var result = publicUser.ToJson(true);
Console.WriteLine(result);
return Ok(result);
}
默认构建的授权调整链接是基于 PC,而有些是区分移动端、扫码等,需要根据客户端来源构建对应的授权跳转链接。