public static void LoginAndroid(PlayerIdentityLoginSubsystem.Callback callback) { using (var kclass = new AndroidJavaClass(_packageName + WxUtilsPackageNameSuffix)) { kclass.CallStatic("getCode", "snsapi_userinfo", new LoginCallBack(callback)); } }
public static void LoginByCodeOrAccessToken(string code, string clientId, string redirectUrl, PlayerIdentityLoginSubsystem.Callback weChatLogin) { var args = new PlayerIdentityLoginSubsystem.IdentityLoginCallbackArgs(); args.externalToken = new UnityEngine.PlayerIdentity.ExternalToken { idProvider = "wechat.com" }; // use unity identity service if (string.IsNullOrEmpty(redirectUrl)) { args.externalToken.authCode = code; weChatLogin(args); } else { var webRequest = UnityWebRequest.Get($"{redirectUrl}?code={code}&&appid={clientId}"); var asyncRequest = webRequest.SendWebRequest(); asyncRequest.completed += operation => { if (webRequest.isNetworkError) { Debug.LogError("Error Get Access Token:" + webRequest.error); args.error = new Error { message = webRequest.error, errorClass = ErrorClass.NetworkError, type = "WECHAT_CUSTOM_CALLBACK_ENDPOINT_SERVER", }; weChatLogin(args); } else { Debug.Log("Get Access Token Response:\n" + webRequest.downloadHandler.text); var response = JsonUtility.FromJson <WechatTokenResponse>(webRequest.downloadHandler.text); if (!string.IsNullOrEmpty(response.errmsg)) { args.error = new Error { message = response.errmsg, errorClass = ErrorClass.Unknown, type = "WECHAT_CUSTOM_CALLBACK_ENDPOINT_SERVER", }; } else { args.externalToken = new UnityEngine.PlayerIdentity.ExternalToken { accessToken = response.accessToken, openid = response.openid, idProvider = "wechat.com", clientId = clientId, redirectUri = "http://localhost" //todo copy from sign with apple }; weChatLogin(args); } } }; } }
public static void login(PlayerIdentityLoginSubsystem.Callback callback) { _callback = callback; loginByWeChat(onGetCode: OnGetCode); }
public LoginCallBack(PlayerIdentityLoginSubsystem.Callback callback) : base(_packageName + WxUtilsPackageNameSuffix + "$GetCodeCallback") { this.callback = callback; }