using UnityEngine; using System.Collections; using MiniJSON; public class SDKCallBack : MonoBehaviour { public static SDKCallBack Instance { get; private set; } public System.Action 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(); 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; 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); Debugger.LogError("微信登陆失败Info:" + request.State); } }).EnableTimoutForStreaming = true; } #endregion }