Files
wnmj-normal/Classes/Mission/MissionWeiXin.h

105 lines
2.4 KiB
C
Raw Normal View History

2026-03-03 13:56:44 +08:00
#pragma once
#include <string>
#include "Singleton.h"
#include "WebReq.h"
struct WxUserInfo
{
std::string openid;
std::string nickname;
int sex;
std::string province;
std::string city;
std::string country;
std::string headimgurl;
std::string unionid;
WxUserInfo()
{
openid = "";
nickname = "";
sex = 0;
province = "";
city = "";
country = "";
headimgurl = "";
unionid = "";
}
WxUserInfo& operator=(const WxUserInfo& refInfo)
{
if (this == &refInfo)
{
return *this;
}
openid = refInfo.openid;
nickname = refInfo.nickname;
sex = refInfo.sex;
province = refInfo.province;
city = refInfo.city;
country = refInfo.country;
headimgurl = refInfo.headimgurl;
unionid = refInfo.unionid;
return *this;
}
};
class IWeiXinMissionSink
{
public:
virtual ~IWeiXinMissionSink(){}
virtual void onWxLoginSuccess(WxUserInfo kWxUserInfo ){}
virtual void onWxLoginFail(std::string kError){}
};
class MissionWeiXin:public Singleton<MissionWeiXin>
{
public:
const static int SHARE_SESSION = 0; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
const static int SHARE_MOMENTS = 1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȧ
public:
MissionWeiXin();
~MissionWeiXin();
public:
void logonWeiXin();
void restWeiXin();
void setMissionSink(IWeiXinMissionSink* pJniMissionSink);
IWeiXinMissionSink* getMissionSink();
void shareScreenWeiXin(std::string strImagic,int nShareType = SHARE_SESSION);
void shareTextWeiXin(std::string kText,int nShareType = SHARE_SESSION);
void shareUrlWeiXin(std::string kUrl,std::string kTitle,std::string kDesc,int nShareType = SHARE_SESSION);
void shareScreenXL(std::string strImagic, int nShareType = SHARE_SESSION);
void shareTextXL(std::string kText, int nShareType = SHARE_SESSION);
void shareUrlXL(std::string kUrl, std::string kTitle, std::string kDesc, int nShareType = SHARE_SESSION);
public:
void Req_Fail_token(std::string param);
void Req_Access_token(std::string param);
void Rsp_Access_token(rapidjson::Document* pDoc);
void Req_UserInfo(const std::string& access_token,const std::string& open_id);
void Rsp_UserInfo(rapidjson::Document* pDoc);
void Req_RefreshToken();
void Rsp_RefreshToken(rapidjson::Document* pDoc);
private:
void captureScreen(bool succeed, const std::string& outputFile,int nShareType);
private:
IWeiXinMissionSink* m_pJinMissionSink;
std::string m_kWxAppId;
std::string m_kWxAppSecret;
std::string m_kUrl;
// <20>Ƿ<EFBFBD>ˢ<EFBFBD>¹<EFBFBD>Token;
bool m_bRefreshToken;
};