El proyecto actual está dirigido principalmente a la encapsulación de interfaces de sitios de redes sociales. En la etapa inicial del proyecto, se centra principalmente en el desarrollo del SDK de la plataforma WeChat, que se clasifica simplemente según el nivel de función de la interfaz.
Este proyecto proporciona servicios en forma de biblioteca estándar, lo que significa que puede admitir tanto .Net Framework (4.6 y superior) como .Net Core.
Si tienes alguna duda, también puedes preguntar en la cuenta oficial (osscore):
1. Módulo de acoplamiento de autorización (Oauth)
Comando de instalación en nuget: Install-Package OSS.Clients.Oauth.WX
Autorización de usuario (oauth2.0), información básica de autorización de usuario
2. Módulo de mensajes de sesión (msg)
Comando de instalación en nuget: Install-Package OSS.Clients.Msg.Wechat
Gestión de sesiones, recepción de información de la sesión del usuario y respuestas correspondientes.
3. Funciones avanzadas de cuentas públicas (Plataforma)
1.Token de acceso
nuget下安装命令:**Install-Package OSS.Clients.Platform.WX.AccessToken**
这里主要是获取AccessToken接口的封装
WXPlatTokenApi - 公众号的正常Token接口
WXAgentPlatTokenApi - 代理平台的Token的接口
2. Parte de información básica
nuget下安装命令:**Install-Package OSS.Clients.Platform.WX.Basic**
这里主要是基础信息相关接口
WXPlatUserApi - 微信公众号用户信息相关接口
WXPlatIpApi - 微信服务器信息接口
WXPlatKfApi - 微信客服接口
WXPlatMassApi - 微信群发消息相关接口
WXPlatMediaApi - 微信素材相关接口
WXPlatMenuApi - 微信菜单相关接口
WXPlatQrApi - 微信二维码相关接口
3.Otras interfaces
nuget下安装命令:**Install-Package OSS.Clients.Platform.WX**
这里主要是公众号其他相关接口
WXPlatAssistApi - 微信jssdk辅助接口
WXPlatCardApi - 微信卡信息相关接口
WXPlatShakeApi - 微信摇一摇相关接口
WXPlatAppApi - 微信小程序相关接口
WXPlatStatApi - 微信统计相关接口
WXPlatStoreApi - 微信门店管理相关接口
4.Interfaz de plataforma de agente
nuget下安装命令:**Install-Package OSS.Clients.Platform.WX.Agent**
这里主要是公众号代理服务平台的相关接口
1. Llamada de autorización básica (en la carpeta sns)
//声明配置信息
private static AppConfig m_Config = new AppConfig ( )
{
AppSource = "11" ,
AppId = "你的appId" ,
AppSecret = "你的secretkey"
} ;
// 接口api实例
private static WXOauthApi m_AuthApi = new WXOauthApi ( m_Config ) ;
// 获取微信授权地址
public ActionResult auth ( )
{
var res = m_AuthApi . GetAuthorizeUrl ( "http://www.social.com/wxoauth/callback" ,
AuthClientType . WXPlat ) ;
return Redirect ( res ) ;
}
// 微信回调页,此页面获取accesstoken 获取用户基础信息
public ActionResult callback ( string code , string state )
{
var tokecRes = m_AuthApi . GetAuthAccessToken ( code ) ;
if ( tokecRes . IsSuccess ( ) )
{
var userInfoRes = m_AuthApi . GetWXAuthUserInfo ( tokecRes . AccessToken , tokecRes . OpenId ) ;
return Content ( "你已成功获取用户信息!" ) ;
}
return Content ( "获取用户授权信息失败!" ) ;
}
2. Llamada de sesión (en la carpeta Msg)
a. Primero declare la información de configuración.
// 声明配置
private static readonly WXChatServerConfig config = new WXChatServerConfig ( )
{
Token = "你的token" ,
EncodingAesKey = "你的加密key" ,
SecurityType = WXSecurityType . Safe , // 在微信段设置的安全模式
AppId = "你的appid" //
} ;
b. Defina un identificador de procesamiento (puede implementar su propio controlador, simplemente herede de WXChatHandler)
private static readonly WXChatHandler msgService = new WXChatHandler ( config ) ;
c. Al llamar, simplemente pase el contenido solicitado actualmente a la entrada del programa:
using ( StreamReader reader = new StreamReader ( Request . InputStream ) )
{
requestXml = reader . ReadToEnd ( ) ;
}
try
{
var res = msgService . Process ( requestXml , signature , timestamp , nonce , echostr ) ;
if ( res . IsSuccess ( ) )
return Content ( res . data ) ;
}
catch ( Exception ex )
{
}
return Content ( "success" ) ;
Entre ellos, WXChatHandler puede ser una clase de procesamiento específica que hereda la implementación de WXChatHandler y devuelve los resultados correspondientes reescribiendo eventos de usuario relevantes.
3. Llamada de función avanzada (en la carpeta Plataforma)
Otras interfaces funcionales avanzadas de la cuenta pública de WeChat requieren una interfaz de token de acceso global, como información del módulo push, etc. La adquisición automática del token de acceso se ha encapsulado en el procesamiento de solicitudes subyacente del SDK. De forma predeterminada, se guardará utilizando el sistema. caché y se actualizará automáticamente cuando caduque. Si es necesario guardarlo, en redis, se puede inyectar a través del módulo de caché en oscommon. Simplemente agregue una implementación del módulo de caché para sns (se dará un ejemplo más adelante). appid corresponden uno a uno, por lo que no hay necesidad de preocuparse por conflictos entre múltiples cuentas oficiales.
a. Declarar información de configuración:
//声明配置信息
private static AppConfig m_Config = new AppConfig ( )
{
AppSource = "11" ,
AppId = "你的appId" ,
AppSecret = "你的secretkey"
} ;
b. Declarar una instancia:
private static readonly WXPlatMassApi m_OffcialApi = new WXPlatMassApi ( m_Config ) ;
c. uso específico
m_OffcialApi . SendTemplateAsync ( "openid" , "templateId" , "url" , new { } )
En la actualidad, se ha procesado la parte lógica de esta parte del marco de la interfaz. Las funciones principales de la cuenta oficial aún están por perfeccionarse. Si es necesario, se actualizarán. , puede implementarlo usted mismo o contribuir con él. Agregar Una nueva interfaz solo requiere unas pocas líneas de código; consulte Contribución de código para obtener más detalles.
En vista de los escenarios de uso reales de la empresa, la interfaz de la cuenta oficial de WeChat simplemente se desmontó y AccessToken y otros son SDK independientes. Todos los SDK independientes hacen referencia a la biblioteca de clases OSS.Clients.Platform.WX.Base y proporcionan una configuración unificada de WXPlatConfigProvider en este tipo de biblioteca, principalmente para facilitar a los usuarios la adquisición unificada de AccessToken cuando utilizan otros SDK, como: El proyecto de administración de caché unificada de AccessToken implementado usando OSS.Clients.Platform.WX.AccessToken implementa el método de adquisición de AccessToken de configuración en WXPlatConfigProvider en el proyecto usando OSS.Clients.Platform.WX.Basic
Actualmente, este proyecto se centra principalmente en el procesamiento del SDK de WeChat. El marco principal de WeChat se ha completado y es necesario complementar la interfaz. Será muy sencillo completar una interfaz basada en el marco encapsulado. Como ejemplo, simplemente se divide en los dos pasos siguientes:
1. Declarar la entidad objeto
// 获取用户基本信息请求实体
public class WXPlatUserInfoReq
{
public string openid { get ; set ; }
public string lang { get ; set ; }
}
// 响应实体,继承WXBaseResp
public class WXPlatUserInfoResp : WXBaseResp
{
public string openid { get ; set ; }
public string nickname { get ; set ; }
//... 字段省略
public List < int > tagid_list { get ; set ; }
}
Escribí una página js para generar rápidamente direcciones Gist de entidades a través de descripciones de campos de documentos de WeChat y direcciones chinas de código abierto.
2.Implementación de funciones
public WXPlatUserInfoResp GetUserInfo ( WXPlatUserInfoReq userReq )
{
var req = new OssHttpRequest ( ) ;
req . HttpMethod = HttpMethod . Get ;
req . AddressUrl = string . Concat ( m_ApiUrl ,
$ "/cgi-bin/user/info?openid= { userReq . openid } &lang= { userReq . lang } " ) ;
// 请求地址中的AccessToken 底层会自动补充
return RestCommonOffcial < WXPlatUserInfoResp > ( req ) ;
}
3. Agregar pruebas unitarias (opcional)
[ TestMethod ]
public void GetUserInfoTest ( )
{
var res = m_Api . GetUserInfo ( new WXPlatUserInfoReq ( )
{ openid = "o7gE1s6mygEKgopVWp7BBtEAqT-w" } ) ;
Assert . IsTrue ( res . IsSuccess ( ) ) ;
}
El resto se puede enviar a través de git.
尽快完善
El proyecto actual se basa en los proyectos de código abierto que escribí antes, OSS.Common (entidad de error global e inyección de módulo) y OSS.Http (solicitud http). Son relativamente simples y compactos, con solo unas pocas clases, por lo que existen. No hay necesidad de preocuparse por la hinchazón.