Asp.Net Core 实现企业微信静默授权教程

4 下载量 108 浏览量 更新于2024-08-31 1 收藏 186KB PDF 举报
本文档将介绍如何在Asp.Net Core应用程序中实现企业微信的静默授权功能。这个过程主要包括三个步骤:构造授权网页链接、通过回调获取Code并请求用户信息,以及获取access_token。在实际操作中,还需要进行内网穿透和域名配置。 企业微信静默授权的实现主要涉及以下几个关键点: 1. 构造授权网页链接:这是授权流程的起点。开发者需要构造一个URL,该URL指向企业微信的OAuth2.0授权页面。URL参数包括`appid`(agentId)、`redirect_uri`(回调地址)、`response_type`(通常为`code`)和`scope`(如`snsapi_base`,表示静默授权)。例如: ```csharp private readonly string _agentId = "1000002"; private readonly string _callbackUrl = "http://.zicp.vip/auth2callback/api/Auth2/Callback"; // 构建授权链接 var auth2Url = $"{_auth2Url}?appid={_agentId}&redirect_uri={Uri.EscapeDataString(_callbackUrl)}&response_type=code&scope=snsapi_base#wechat_redirect"; ``` 2. 回调获取Code:用户在授权后会被重定向到指定的回调URL,并携带一个`code`参数。你需要通过这个`code`,结合应用的`secret`(AppSecret),向企业微信API请求access_token。示例代码: ```csharp private readonly string _secret = "Y3f8ESBIBJoC8M_FPHOlpvmghS_Nn2ceFePRVZjw9_E"; private readonly string _getTokenUrl = "https://qyapi.weixin.qq.com/cgi-bin/gettoken"; // 通过Code换取access_token private async Task<string> GetAccessTokenAsync(string code) { // 实现代码... } ``` 3. 获取access_token:使用`code`和`secret`,向`gettokenurl`发送HTTP请求,以获取access_token和session_key。这一步是关键,因为后续获取用户信息需要access_token。请求示例: ```csharp // 使用HttpClient发送POST请求 var content = new FormUrlEncodedContent(new[] { new KeyValuePair<string, string>("corpid", _corpId), new KeyValuePair<string, string>("corpsecret", _secret), new KeyValuePair<string, string>("code", code) }); var response = await _httpClient.PostAsync(_getTokenUrl, content); // 解析响应,获取access_token var result = await response.Content.ReadAsStringAsync(); // 解析JSON... ``` 4. 获取用户信息:有了access_token,你可以调用`getuserurl`获取用户的身份信息。由于是静默授权,这里通常只能获取到基础信息,例如员工ID。示例: ```csharp private readonly string _getUserUrl = "https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo"; // 使用access_token获取用户信息 private async Task<UserInfo> GetUserByAccessTokenAsync(string accessToken) { // 实现代码... } ``` 5. 调试与准备:在开发和测试阶段,可能需要进行内网穿透以便外部访问本地服务,如使用向日葵等工具。同时,回调域名需要配置为企业微信认可的可信域名。 在Asp.Net Core的控制器中,你可以创建一个`Auth2Controller`,包含上述逻辑,处理授权请求和回调,如下所示: ```csharp [ApiController] [Route("api/[controller]")] public class Auth2Controller : ControllerBase { // 上述代码中的私有变量和方法... [HttpGet("callback")] public async Task<IActionResult> Callback(string code) { // 获取access_token并进一步获取用户信息 var accessToken = await GetAccessTokenAsync(code); var userInfo = await GetUserByAccessTokenAsync(accessToken); // 处理用户信息,比如保存到数据库或返回给前端 // ... return Ok(userInfo); } } ``` 以上就是Asp.Net Core实现企业微信静默授权的详细步骤,包括关键代码片段和注意事项。在实际开发中,你需要根据具体需求来完善这些方法,处理错误,以及整合到你的业务逻辑中。