Текущий проект в основном направлен на инкапсуляцию интерфейсов сайтов социальных сетей. На ранней стадии проекта он в основном сосредоточен на разработке SDK платформы WeChat, который просто классифицируется по уровню функций интерфейса.
Этот проект предоставляет услуги в виде стандартной библиотеки, что означает, что он может поддерживать как .Net Framework (4.6 и выше), так и .Net Core.
Если у вас есть вопросы, вы также можете задать их в официальном аккаунте (osscore):
1. Модуль стыковки авторизации (Oauth)
Команда установки под nuget: Install-Package OSS.Clients.Oauth.WX
Авторизация пользователя (oauth2.0), основная информация для авторизации пользователя
2. Модуль сообщений сеанса (msg)
Команда установки под nuget: Install-Package OSS.Clients.Msg.Wechat
Управление сеансом, получение информации о сеансе пользователя и соответствующих ответов
3. Расширенные функции паблик-аккаунтов (Платформы)
1.Токен доступа
nuget下安装命令:**Install-Package OSS.Clients.Platform.WX.AccessToken**
这里主要是获取AccessToken接口的封装
WXPlatTokenApi - 公众号的正常Token接口
WXAgentPlatTokenApi - 代理平台的Token的接口
2. Основная информационная часть
nuget下安装命令:**Install-Package OSS.Clients.Platform.WX.Basic**
这里主要是基础信息相关接口
WXPlatUserApi - 微信公众号用户信息相关接口
WXPlatIpApi - 微信服务器信息接口
WXPlatKfApi - 微信客服接口
WXPlatMassApi - 微信群发消息相关接口
WXPlatMediaApi - 微信素材相关接口
WXPlatMenuApi - 微信菜单相关接口
WXPlatQrApi - 微信二维码相关接口
3.Другие интерфейсы
nuget下安装命令:**Install-Package OSS.Clients.Platform.WX**
这里主要是公众号其他相关接口
WXPlatAssistApi - 微信jssdk辅助接口
WXPlatCardApi - 微信卡信息相关接口
WXPlatShakeApi - 微信摇一摇相关接口
WXPlatAppApi - 微信小程序相关接口
WXPlatStatApi - 微信统计相关接口
WXPlatStoreApi - 微信门店管理相关接口
4. Интерфейс агентской платформы
nuget下安装命令:**Install-Package OSS.Clients.Platform.WX.Agent**
这里主要是公众号代理服务平台的相关接口
1. Базовый авторизационный вызов (в папке 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. Сеансовый вызов (в папке «Сообщения»)
а. Сначала объявите информацию о конфигурации.
// 声明配置
private static readonly WXChatServerConfig config = new WXChatServerConfig ( )
{
Token = "你的token" ,
EncodingAesKey = "你的加密key" ,
SecurityType = WXSecurityType . Safe , // 在微信段设置的安全模式
AppId = "你的appid" //
} ;
б. Определите дескриптор обработки (вы можете реализовать свой собственный обработчик, просто унаследовав его от WXChatHandler).
private static readonly WXChatHandler msgService = new WXChatHandler ( config ) ;
в. При вызове просто передайте текущий запрошенный контент во вход в программу:
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" ) ;
Среди них WXChatHandler может быть особым классом обработки, который наследует реализацию WXChatHandler и возвращает соответствующие результаты, переписывая соответствующие пользовательские события.
3. Вызов расширенной функции (в папке «Платформа»)
Другие расширенные функциональные интерфейсы общедоступной учетной записи WeChat требуют глобального интерфейса токена доступа, такого как информация о модуле push и т. д. Автоматическое получение токена доступа инкапсулировано в базовую обработку запроса SDK. По умолчанию он сохраняется с помощью системы. кэш и будет автоматически обновляться по истечении срока его действия. Если его необходимо сохранить, в Redis его можно внедрить через модуль кэша в oscommon. Просто добавьте реализацию модуля кэша для sns (пример будет приведен позже). appid соответствуют один к одному, поэтому не нужно беспокоиться о конфликтах между несколькими официальными учетными записями.
а. Объявите информацию о конфигурации:
//声明配置信息
private static AppConfig m_Config = new AppConfig ( )
{
AppSource = "11" ,
AppId = "你的appId" ,
AppSecret = "你的secretkey"
} ;
б. Объявить экземпляр:
private static readonly WXPlatMassApi m_OffcialApi = new WXPlatMassApi ( m_Config ) ;
в. Конкретное использование
m_OffcialApi . SendTemplateAsync ( "openid" , "templateId" , "url" , new { } )
На данный момент доработана логическая часть этой части интерфейса. Основные функции официального аккаунта еще предстоит доработать. При необходимости будут обновлены. , вы можете реализовать его самостоятельно или внести свой вклад. Добавить Новый интерфейс требует всего нескольких строк кода, подробности см. в разделе «Внесение кода».
С учетом реальных сценариев использования в бизнесе интерфейс официального аккаунта WeChat был просто разобран, а AccessToken и другие являются независимыми SDK. Все независимые SDK ссылаются на библиотеку классов OSS.Clients.Platform.WX.Base и обеспечивают унифицированную настройку WXPlatConfigProvider в рамках этого типа библиотеки, главным образом, чтобы облегчить пользователям возможность унифицированного получения AccessToken при использовании других SDK, таких как: Проект единого управления кешем AccessToken, реализованный с использованием OSS.Clients.Platform.WX.AccessToken, реализует метод получения конфигурации AccessToken в WXPlatConfigProvider в проекте с использованием OSS.Clients.Platform.WX.Basic.
В настоящее время этот проект в основном ориентирован на обработку WeChat SDK. Основная структура WeChat завершена, и интерфейс необходимо дополнить. Будет очень просто создать интерфейс на основе инкапсулированной структуры. Например, он просто разделен на следующие два этапа:
1. Объявить объектную сущность
// 获取用户基本信息请求实体
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 ; }
}
Я написал страницу js для быстрого создания адресов Gist сущностей с помощью описаний полей документа WeChat, китайских адресов с открытым исходным кодом.
2.Реализация функции
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. Добавьте модульные тесты (необязательно).
[ TestMethod ]
public void GetUserInfoTest ( )
{
var res = m_Api . GetUserInfo ( new WXPlatUserInfoReq ( )
{ openid = "o7gE1s6mygEKgopVWp7BBtEAqT-w" } ) ;
Assert . IsTrue ( res . IsSuccess ( ) ) ;
}
Остальное можно отправить через git.
尽快完善
Текущий проект основан на проектах с открытым исходным кодом, которые я написал ранее, OSS.Common (глобальный объект ошибок и внедрение модулей) и OSS.Http (http-запрос). Они относительно просты и компактны, содержат всего несколько классов, поэтому есть. не нужно беспокоиться о раздувании.