void onError(int errorCode, string errorString) { var args = new PlayerIdentityLoginSubsystem.IdentityLoginCallbackArgs(); args.error = new Error { message = errorString, type = "WECHAT_APP_OAUTH_ERROR" }; onLoginCompleted(args); }
private static void OnGetCode([MarshalAs(UnmanagedType.Struct)] CodeInfo codeInfo) { if (_callback == null) { Debug.LogError("callback not set for wechat login...."); return; } if (string.IsNullOrEmpty(codeInfo.errMsg)) { WeChatLoginUtils.LoginByCodeOrAccessToken(codeInfo.code, _appId, _redirectUrl, args => { _callback(args); }); } else { var args = new PlayerIdentityLoginSubsystem.IdentityLoginCallbackArgs(); args.error = new Error { message = codeInfo.errMsg, type = "WECHAT_APP_OAUTH_ERROR" }; _callback(args); } }
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); } } }; } }
void onLoginCompleted(PlayerIdentityLoginSubsystem.IdentityLoginCallbackArgs args) { callback(args); }