changhong/wb_unity_pro/Assets/Scripts/Platform/SDKCallBack.cs

188 lines
6.4 KiB
C#
Raw Normal View History

using UnityEngine;
using System.Collections;
using MiniJSON;
public class SDKCallBack : MonoBehaviour
{
public static SDKCallBack Instance { get; private set; }
public System.Action<int, string> AuthCallback { get; set; }
public System.Action ShareCallback { get; set; }
void Awake()
{
Instance = this;
}
public void OnShareAction()
{
if (ShareCallback != null) ShareCallback();
}
#region 微信登录回调
public void WXGetToken(string code)
{
WXApplyToken(code);
}
public void CheckAccessToken()
{
if (!string.IsNullOrEmpty(WXData.AccessToken) && !string.IsNullOrEmpty(WXData.OpenID))
{
WXCheckToken();
}
else
{
if (AuthCallback != null) AuthCallback(1, null);
}
}
void WXApplyToken(string code)
{
string url = WXData.GetApplyTokenURL(code);
//Debugger.Log("url:" + url);
//Debug.LogError("2222222222222222222222222==================");
//Debug.LogError(url);
//GRoot.inst.ShowModalWait();
if (AuthCallback != null) AuthCallback(10, null);
BestHTTP.HTTPManager.SendRequest(url, (request, response) =>
{
//Debug.LogError("33333333333333333333333333333333333=================" + url);
if (request.State == BestHTTP.HTTPRequestStates.Finished && request.Response.IsSuccess)
{
//Debug.LogError("4444444444444444444444444444=================" + request.Response.DataAsText);
//Debug.LogError(request.Response.DataAsText);
//Debugger.Log(request.Response.DataAsText);
Hashtable jd = (Hashtable)Json.Deserialize(request.Response.DataAsText);
WXData.RefreshToken = (string)jd["refresh_token"];
Debug.LogError("WXData.RefreshToken"+WXData.RefreshToken);
WXData.AccessToken = (string)jd["access_token"];
Debug.LogError("WXData.AccessToken"+WXData.AccessToken);
WXData.OpenID = (string)jd["openid"];
Debug.LogError("WXData.OpenID" + WXData.OpenID);
WXCheckToken();
}
else
{
//Debug.LogError("55555555555555555555555555555555=================");
var status = "Request Finished with Error! " + (request.Exception != null ? (request.Exception.Message + "\n" + request.Exception.StackTrace) : "No Exception");
if (AuthCallback != null) AuthCallback(1, null);
//Debugger.LogError("微信登陆Apply:" + status);
}
}).EnableTimoutForStreaming = true;
}
void WXCheckToken()
{
string url = WXData.GetCheckTokenURL();
//Debugger.Log("url:" + url);
BestHTTP.HTTPManager.SendRequest(url, (request, response) =>
{
if (request.State == BestHTTP.HTTPRequestStates.Finished && request.Response.IsSuccess)
{
//Debug.LogError("WXCheckToken======" + request.Response.DataAsText);
Hashtable jd = (Hashtable)Json.Deserialize(request.Response.DataAsText);
int num = (int)jd["errcode"];
//Debugger.Log("微信登陆Check:" + num);
if (num == 0)
{
WXGetUserInfo();
}
else
{
WXRefreshToken();
//Debugger.Log("微信登陆Check:更新");
}
}
else
{
if (AuthCallback != null) AuthCallback(1, null);
//Debugger.LogError("微信登陆Check:" + request.State);
}
}).EnableTimoutForStreaming = true;
}
void WXRefreshToken()
{
string url = WXData.GetRefreshTokenURL();
//Debugger.Log("WXRefreshToken===url:" + url);
BestHTTP.HTTPManager.SendRequest(url, (request, response) =>
{
if (request.State == BestHTTP.HTTPRequestStates.Finished && request.Response.IsSuccess)
{
Hashtable jd = null;
int error = 0;
try
{
//Debug.LogError("WXRefreshToken===Response====>" + request.Response.DataAsText);
jd = (Hashtable)Json.Deserialize(request.Response.DataAsText);
error = (int)jd["errcode"];
}
catch (System.Exception ex)
{
error = 1;
//Debugger.LogError(ex);
}
if (error == 0)
{
WXData.RefreshToken = (string)jd["refresh_token"];
WXData.AccessToken = (string)jd["access_token"];
WXData.OpenID = (string)jd["openid"];
WXGetUserInfo();
}
else
{
//Debug.LogError("微信登录失败===============");
//Debugger.Log("微信登陆Refresh:" + error);
if (AuthCallback != null) AuthCallback(1, null);
}
}
else
{
if (AuthCallback != null) AuthCallback(1, null);
//Debugger.LogError("微信登陆Refresh:" + request.State);
}
}).EnableTimoutForStreaming = true;
}
void WXGetUserInfo()
{
string url = WXData.GetUserInfoURL();
2025-09-01 17:41:29 +08:00
Debug.LogError("WXGetUserInfo===Url==>" + url);
BestHTTP.HTTPManager.SendRequest(url, (request, response) =>
{
if (request.State == BestHTTP.HTTPRequestStates.Finished && request.Response.IsSuccess)
{
var _text = request.Response.DataAsText;
2025-09-01 17:41:29 +08:00
Debug.LogError("WXGetUserInfo=====>" + _text);
if (AuthCallback != null)
{
if (string.IsNullOrEmpty(_text))
{
AuthCallback(1, _text);
}
else
{
AuthCallback(0, _text);
}
}
}
else
{
if (AuthCallback != null) AuthCallback(1, null);
2025-09-01 17:41:29 +08:00
Debugger.LogError("微信登陆失败Info:" + request.State);
}
}).EnableTimoutForStreaming = true;
}
#endregion
}