namespace Tiku.Application.Auth; public sealed record WechatProviderOptions( string AppId, string AppSecret); public sealed record WechatIdentity( string OpenId, string? UnionId, string? Nickname, string? AvatarUrl, string? SessionKey, string RawJson); public interface IWechatOAuthClient { Task ExchangeWebCodeAsync( WechatProviderOptions options, string code, CancellationToken cancellationToken = default); Task ExchangeMiniAppCodeAsync( WechatProviderOptions options, string code, CancellationToken cancellationToken = default); }