Skip to content

Latest commit

 

History

History
177 lines (163 loc) · 9.03 KB

README.md

File metadata and controls

177 lines (163 loc) · 9.03 KB

Netnr.Login

第三方 OAuth2 授权登录,QQ、微信开放平台(Weixin)、微信公众平台(WeixinMP)、微博(Weibo)、淘宝(Taobao)、支付宝(Alipay)、钉钉(DingTalk)、飞书(Feishu)、华为(Huawei)、小米(Xiaomi)、AtomGit、码云(Gitee)、GitHub、GitLab、微软(Microsoft )、StackOverflow、谷歌(Google)、ORCID

安装 (NuGet)

Install-Package Netnr.Login

支持第三方登录

三方参考文档应用申请(已登录)
参考文档 应用申请
参考文档 应用申请
参考文档 应用申请
参考文档 应用申请
参考文档 应用申请
参考文档 应用申请
参考文档 应用申请
参考文档 应用申请
参考文档 应用申请
参考文档 应用申请
参考文档 应用申请
参考文档 应用申请
参考文档 应用申请
参考文档 应用申请
参考文档 应用申请
参考文档 应用申请
参考文档 应用申请
参考文档 应用申请

变更

v5 版本全面重写,不兼容以前,调用方法更简单简洁
移除 Newtonsoft.Json 组件,改为 System.Text.Json
微软含新旧模式(注意新旧版本标识不相同)
钉钉含新旧模式(新:企业内部开发 H5微应用;旧:移动应用接入 扫码登录)

2024-10-17

新增 AtomGit、ORCID、GitLab
删除 字段 PublicUserResult.Gender
修改 字段 PublicUserResult.IntroBio

2024-10-18

新增 华为 小米
修复 微博获取唯一标识的错误,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,而有些是区分移动端、扫码等,需要根据客户端来源构建对应的授权跳转链接。