Le projet actuel vise principalement l'encapsulation d'interface de sites de réseaux sociaux. Au début du projet, il se concentre principalement sur le développement du SDK de la plateforme WeChat, qui est simplement classé selon le niveau de fonction d'interface.
Ce projet fournit des services sous la forme d'une bibliothèque standard, ce qui signifie qu'il peut prendre en charge à la fois .Net Framework (4.6 et supérieur) et .Net Core.
Si vous avez des questions, vous pouvez également les poser sur le compte officiel (osscore) :
1. Module d'accueil d'autorisation (Oauth)
Commande d'installation sous nuget : Install-Package OSS.Clients.Oauth.WX
Autorisation utilisateur (oauth2.0), informations d'autorisation utilisateur de base
2. Module de messages de session (msg)
Commande d'installation sous nuget : Install-Package OSS.Clients.Msg.Wechat
Gestion de session, réception d'informations de session utilisateur et des réponses correspondantes
3. Fonctions avancées des comptes publics (Plateforme)
1.Jeton d'accès
nuget下安装命令:**Install-Package OSS.Clients.Platform.WX.AccessToken**
这里主要是获取AccessToken接口的封装
WXPlatTokenApi - 公众号的正常Token接口
WXAgentPlatTokenApi - 代理平台的Token的接口
2. Partie informations de base
nuget下安装命令:**Install-Package OSS.Clients.Platform.WX.Basic**
这里主要是基础信息相关接口
WXPlatUserApi - 微信公众号用户信息相关接口
WXPlatIpApi - 微信服务器信息接口
WXPlatKfApi - 微信客服接口
WXPlatMassApi - 微信群发消息相关接口
WXPlatMediaApi - 微信素材相关接口
WXPlatMenuApi - 微信菜单相关接口
WXPlatQrApi - 微信二维码相关接口
3.Autres interfaces
nuget下安装命令:**Install-Package OSS.Clients.Platform.WX**
这里主要是公众号其他相关接口
WXPlatAssistApi - 微信jssdk辅助接口
WXPlatCardApi - 微信卡信息相关接口
WXPlatShakeApi - 微信摇一摇相关接口
WXPlatAppApi - 微信小程序相关接口
WXPlatStatApi - 微信统计相关接口
WXPlatStoreApi - 微信门店管理相关接口
4.Interface de la plateforme d'agent
nuget下安装命令:**Install-Package OSS.Clients.Platform.WX.Agent**
这里主要是公众号代理服务平台的相关接口
1. Appel d'autorisation de base (sous le dossier 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. Appel de session (sous le dossier Msg)
a. Déclarez d’abord les informations de configuration
// 声明配置
private static readonly WXChatServerConfig config = new WXChatServerConfig ( )
{
Token = "你的token" ,
EncodingAesKey = "你的加密key" ,
SecurityType = WXSecurityType . Safe , // 在微信段设置的安全模式
AppId = "你的appid" //
} ;
b. Définissez un handle de traitement (vous pouvez implémenter votre propre handler, héritez simplement de WXChatHandler)
private static readonly WXChatHandler msgService = new WXChatHandler ( config ) ;
c. Lors de l'appel, transmettez simplement le contenu actuellement demandé dans l'entrée du programme :
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" ) ;
Parmi eux, WXChatHandler peut être une classe de traitement spécifique qui hérite de l'implémentation de WXChatHandler et renvoie les résultats correspondants en réécrivant les événements utilisateur pertinents.
3. Appel de fonction avancée (sous le dossier Platform)
D'autres interfaces fonctionnelles avancées du compte officiel WeChat nécessitent une interface de jeton d'accès globale, telle que les informations du module push, etc. L'acquisition automatique du jeton d'accès a été encapsulée dans le traitement des demandes sous-jacentes du SDK. Par défaut, il sera enregistré dans le système. cache et sera automatiquement mis à jour à son expiration. S'il doit être sauvegardé, dans redis, il peut être injecté via le module de cache dans oscommon. Ajoutez simplement une implémentation de module de cache pour sns (un exemple sera donné plus tard). appid correspond un à un, il n'y a donc pas lieu de s'inquiéter des conflits entre plusieurs comptes officiels.
a. Déclarez les informations de configuration :
//声明配置信息
private static AppConfig m_Config = new AppConfig ( )
{
AppSource = "11" ,
AppId = "你的appId" ,
AppSecret = "你的secretkey"
} ;
b. Déclarez une instance :
private static readonly WXPlatMassApi m_OffcialApi = new WXPlatMassApi ( m_Config ) ;
c. Utilisation spécifique
m_OffcialApi . SendTemplateAsync ( "openid" , "templateId" , "url" , new { } )
A l'heure actuelle, la partie logique de cette partie du framework d'interface a été traitée. Les principales fonctions du compte officiel ont été complétées. Les interfaces du magasin et la gestion des équipements sont encore à perfectionner. Elles seront mises à jour prochainement si nécessaire. , vous pouvez l'implémenter vous-même ou y contribuer. Ajouter Une nouvelle interface ne nécessite que quelques lignes de code, voir Contribuer au code pour plus de détails.
Compte tenu des scénarios d'utilisation réels de l'entreprise, l'interface du compte officiel WeChat a été simplement démontée, et AccessToken et autres sont des SDK indépendants. Tous les SDK indépendants font référence à la bibliothèque de classes OSS.Clients.Platform.WX.Base et fournissent une configuration unifiée de WXPlatConfigProvider sous ce type de bibliothèque, principalement pour faciliter l'acquisition unifiée d'AccessToken par les utilisateurs lors de l'utilisation d'autres SDK, tels que : Le projet de gestion de cache unifiée AccessToken implémenté à l'aide de OSS.Clients.Platform.WX.AccessToken implémente la méthode d'acquisition de configuration AccessToken sous WXPlatConfigProvider dans le projet utilisant OSS.Clients.Platform.WX.Basic
Ce projet se concentre actuellement principalement sur le traitement du SDK WeChat. Le framework principal de WeChat est terminé et l'interface doit être complétée. Il sera très simple de compléter une interface basée sur le framework encapsulé. à titre d'exemple, il est simplement divisé en deux étapes de partie suivantes :
1. Déclarez l'entité objet
// 获取用户基本信息请求实体
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 ; }
}
J'ai écrit une page js pour générer rapidement des adresses Gist d'entité via des descriptions de champs de documents WeChat, des adresses chinoises open source
2. Implémentation des fonctions
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. Ajouter des tests unitaires (facultatif)
[ TestMethod ]
public void GetUserInfoTest ( )
{
var res = m_Api . GetUserInfo ( new WXPlatUserInfoReq ( )
{ openid = "o7gE1s6mygEKgopVWp7BBtEAqT-w" } ) ;
Assert . IsTrue ( res . IsSuccess ( ) ) ;
}
Le reste peut être soumis via git.
尽快完善
Le projet actuel s'appuie sur les projets open source que j'ai écrits auparavant, OSS.Common (entité d'erreur globale et injection de module) et OSS.Http (requête http). Ils sont relativement simples et compacts, avec seulement quelques classes, donc il y en a). pas besoin de s'inquiéter des ballonnements.