/// <summary> /// 请求发送验证码。 /// </summary> /// <returns>是否发送成功。</returns> /// <param name="mobilePhoneNumber">手机号。</param> /// <param name="name">应用名称。</param> /// <param name="op">进行的操作名称。</param> /// <param name="ttl">验证码失效时间。</param> /// <param name="cancellationToken">Cancellation token。</param> public static Task <bool> RequestSMSCodeAsync(string mobilePhoneNumber, string name, string op, int ttl, CancellationToken cancellationToken) { if (string.IsNullOrEmpty(mobilePhoneNumber)) { throw new AVException(AVException.ErrorCode.MobilePhoneInvalid, "Moblie Phone number is invalid.", null); } Dictionary <string, object> strs = new Dictionary <string, object>() { { "mobilePhoneNumber", mobilePhoneNumber }, }; if (!string.IsNullOrEmpty(name)) { strs.Add("name", name); } if (!string.IsNullOrEmpty(op)) { strs.Add("op", op); } if (ttl > 0) { strs.Add("ttl", ttl); } return(AVClient.RequestAsync("POST", "/requestSmsCode", null, strs, cancellationToken).OnSuccess <Tuple <HttpStatusCode, IDictionary <string, object> >, bool>((Task <Tuple <HttpStatusCode, IDictionary <string, object> > > t) => { return AVClient.IsSuccessStatusCode(t.Result.Item1); })); }
/// <summary> /// 请求发送验证码。 /// </summary> /// <returns>是否发送成功。</returns> /// <param name="mobilePhoneNumber">手机号。</param> /// <param name="name">应用名称。</param> /// <param name="op">进行的操作名称。</param> /// <param name="ttl">验证码失效时间。</param> /// <param name="cancellationToken">Cancellation token。</param> public static Task <bool> RequestSMSCodeAsync(string mobilePhoneNumber, string name, string op, int ttl = 10, CancellationToken cancellationToken = default(CancellationToken)) { if (string.IsNullOrEmpty(mobilePhoneNumber)) { throw new AVException(AVException.ErrorCode.MobilePhoneInvalid, "Moblie Phone number is invalid.", null); } Dictionary <string, object> strs = new Dictionary <string, object>() { { "mobilePhoneNumber", mobilePhoneNumber }, }; if (!string.IsNullOrEmpty(name)) { strs.Add("name", name); } if (!string.IsNullOrEmpty(op)) { strs.Add("op", op); } if (ttl > 0) { strs.Add("TTL", ttl); } var command = new AVCommand("requestSmsCode", method: "POST", sessionToken: null, data: strs); return(AVPlugins.Instance.CommandRunner.RunCommandAsync(command, cancellationToken: cancellationToken).ContinueWith(t => { return AVClient.IsSuccessStatusCode(t.Result.Item1); })); }
/// <summary> /// 验证是否是有效短信验证码。 /// </summary> /// <returns>是否验证通过。</returns> /// <param name="code">验证码。</param> /// <param name="mobilePhoneNumber">手机号</param> /// <param name="cancellationToken">Cancellation token.</param> public static Task <bool> VerifySmsCodeAsync(string code, string mobilePhoneNumber, CancellationToken cancellationToken) { Dictionary <string, object> strs = new Dictionary <string, object>() { { "code", code.Trim() }, { "mobilePhoneNumber", mobilePhoneNumber.Trim() }, }; return(AVClient.RequestAsync("POST", "/verifySmsCode/" + code.Trim() + "?mobilePhoneNumber=" + mobilePhoneNumber.Trim(), null, null, cancellationToken).OnSuccess <Tuple <HttpStatusCode, IDictionary <string, object> >, bool>((Task <Tuple <HttpStatusCode, IDictionary <string, object> > > t) => { return AVClient.IsSuccessStatusCode(t.Result.Item1); })); }
/// <summary> /// 验证是否是有效短信验证码。 /// </summary> /// <returns>是否验证通过。</returns> /// <param name="code">验证码。</param> /// <param name="mobilePhoneNumber">手机号</param> /// <param name="cancellationToken">Cancellation token.</param> public static Task <bool> VerifySmsCodeAsync(string code, string mobilePhoneNumber, CancellationToken cancellationToken) { var command = new AVCommand("verifySmsCode/" + code.Trim() + "?mobilePhoneNumber=" + mobilePhoneNumber.Trim(), method: "POST", sessionToken: null, data: null); return(AVPlugins.Instance.CommandRunner.RunCommandAsync(command, cancellationToken: cancellationToken).ContinueWith(t => { return AVClient.IsSuccessStatusCode(t.Result.Item1); })); }
/// <summary> /// 发送认证码到需要认证的手机上 /// </summary> /// <param name="mobilePhoneNumber">手机号</param> /// <param name="cancellationToken">CancellationToken</param> /// <returns></returns> public static Task <bool> RequestMobilePhoneVerifyAsync(string mobilePhoneNumber, CancellationToken cancellationToken) { string currentSessionToken = AVUser.CurrentSessionToken; Dictionary <string, object> strs = new Dictionary <string, object>() { { "mobilePhoneNumber", mobilePhoneNumber } }; return(AVClient.RequestAsync("POST", "/requestMobilePhoneVerify", currentSessionToken, strs, cancellationToken).OnSuccess <Tuple <HttpStatusCode, IDictionary <string, object> >, bool>((Task <Tuple <HttpStatusCode, IDictionary <string, object> > > t) => { return AVClient.IsSuccessStatusCode(t.Result.Item1); })); }
/// <summary> /// 通过验证码重置密码。 /// </summary> /// <param name="newPassword">新密码</param> /// <param name="smsCode">6位数验证码</param> /// <param name="cancellationToken">cancellationToken</param> /// <returns></returns> public static Task <bool> ResetPasswordBySmsCodeAsync(string newPassword, string smsCode, CancellationToken cancellationToken) { string currentSessionToken = AVUser.CurrentSessionToken; Dictionary <string, object> strs = new Dictionary <string, object>() { { "password", newPassword } }; return(AVClient.RequestAsync("PUT", "/resetPasswordBySmsCode/" + smsCode, currentSessionToken, strs, cancellationToken).OnSuccess <Tuple <HttpStatusCode, IDictionary <string, object> >, bool>((Task <Tuple <HttpStatusCode, IDictionary <string, object> > > t) => { return AVClient.IsSuccessStatusCode(t.Result.Item1); })); }
/// <summary> /// Requests the login SMS code asynchronous. /// </summary> /// <param name="mobilePhoneNumber">The mobile phone number.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns></returns> public static Task <bool> RequestLoginSmsCodeAsync(string mobilePhoneNumber, CancellationToken cancellationToken) { Dictionary <string, object> strs = new Dictionary <string, object>() { { "mobilePhoneNumber", mobilePhoneNumber } }; var command = new AVCommand("/requestLoginSmsCode", method: "POST", sessionToken: CurrentSessionToken, data: null); return(AVClient.RequestAsync("POST", "/requestLoginSmsCode", null, strs, cancellationToken).OnSuccess <Tuple <HttpStatusCode, IDictionary <string, object> >, bool>((Task <Tuple <HttpStatusCode, IDictionary <string, object> > > t) => { return AVClient.IsSuccessStatusCode(t.Result.Item1); })); }
/// <summary> /// /// </summary> /// <param name="mobilePhoneNumber"></param> /// <returns></returns> public static Task <bool> RequestVoiceCodeAsync(string mobilePhoneNumber) { if (string.IsNullOrEmpty(mobilePhoneNumber)) { throw new AVException(AVException.ErrorCode.MobilePhoneInvalid, "Moblie Phone number is invalid.", null); } Dictionary <string, object> strs = new Dictionary <string, object>() { { "mobilePhoneNumber", mobilePhoneNumber }, { "smsType", "voice" }, { "IDD", "+86" } }; return(AVClient.RequestAsync("POST", "/requestSmsCode", null, strs, CancellationToken.None).OnSuccess <Tuple <HttpStatusCode, IDictionary <string, object> >, bool>((Task <Tuple <HttpStatusCode, IDictionary <string, object> > > t) => { return AVClient.IsSuccessStatusCode(t.Result.Item1); })); }
/// <summary> /// 根据 ObjectId 获取文件 /// </summary> /// <remarks>获取之后并没有实际执行下载,只是加载了文件的元信息以及物理地址(Url) /// </remarks> public static Task <AVFile> GetFileWithObjectIdAsync(string objectId, CancellationToken cancellationToken) { string currentSessionToken = AVUser.CurrentSessionToken; return(AVClient.RequestAsync("GET", new Uri(string.Format("/files/{0}", objectId), UriKind.Relative), currentSessionToken, null, cancellationToken).OnSuccess <Tuple <HttpStatusCode, IDictionary <string, object> >, AVFile>((Task <Tuple <HttpStatusCode, IDictionary <string, object> > > t) => { AVFile rtn = null; if (AVClient.IsSuccessStatusCode(t.Result.Item1)) { var metaData = t.Result.Item2["metaData"] as IDictionary <string, object>; rtn = new AVFile(t.Result.Item2["name"] as string, t.Result.Item2["url"] as string, metaData); rtn.MergeFromJSON(t.Result.Item2); } return rtn; })); }
public static Task <DateTime> GetServerDateTime() { return(AVClient.RequestAsync("GET", "/date", null, null, CancellationToken.None).OnSuccess <Tuple <HttpStatusCode, IDictionary <string, object> >, DateTime>((Task <Tuple <HttpStatusCode, IDictionary <string, object> > > t) => { DateTime rtn = DateTime.MinValue; if (AVClient.IsSuccessStatusCode(t.Result.Item1)) { var date = AVDecoder.Instance.Decode(t.Result.Item2); if (date != null) { if (date is DateTime) { rtn = (DateTime)date; } } } return rtn; })); }
/// <summary> /// // 发送手机短信,并指定模板以及传入模板所需的参数。 // // Exceptions: // AVOSCloud.AVException: // 手机号为空。 /// /// <param name="mobilePhoneNumber"></param> /// <param name="template"></param> /// <param name="env"></param> /// <returns></returns> public static Task <bool> RequestSMSCodeAsync(string mobilePhoneNumber, string template, IDictionary <string, object> env) { if (string.IsNullOrEmpty(mobilePhoneNumber)) { throw new AVException(AVException.ErrorCode.MobilePhoneInvalid, "Moblie Phone number is invalid.", null); } Dictionary <string, object> strs = new Dictionary <string, object>() { { "mobilePhoneNumber", mobilePhoneNumber }, }; strs.Add("template", template); foreach (var key in env.Keys) { strs.Add(key, env[key]); } return(AVClient.RequestAsync("POST", "/requestSmsCode", null, strs, CancellationToken.None).OnSuccess <Tuple <HttpStatusCode, IDictionary <string, object> >, bool>((Task <Tuple <HttpStatusCode, IDictionary <string, object> > > t) => { return AVClient.IsSuccessStatusCode(t.Result.Item1); })); }
/// <summary> /// 发送手机短信,并指定模板以及传入模板所需的参数。 /// Exceptions: /// AVOSCloud.AVException: /// 手机号为空。 /// <param name="mobilePhoneNumber"></param> /// <param name="template">Sms's template</param> /// <param name="env">Template variables env.</param> /// <param name="sign">Sms's sign.</param> /// <param name="cancellationToken">Cancellation token.</param> /// <returns></returns> public static Task <bool> RequestSMSCodeAsync( string mobilePhoneNumber, string template, IDictionary <string, object> env, string sign = "", string validateToken = "", CancellationToken cancellationToken = default(CancellationToken)) { if (string.IsNullOrEmpty(mobilePhoneNumber)) { throw new AVException(AVException.ErrorCode.MobilePhoneInvalid, "Moblie Phone number is invalid.", null); } Dictionary <string, object> strs = new Dictionary <string, object>() { { "mobilePhoneNumber", mobilePhoneNumber }, }; strs.Add("template", template); if (String.IsNullOrEmpty(sign)) { strs.Add("sign", sign); } if (String.IsNullOrEmpty(validateToken)) { strs.Add("validate_token", validateToken); } foreach (var key in env.Keys) { strs.Add(key, env[key]); } var command = new AVCommand("requestSmsCode", method: "POST", sessionToken: null, data: strs); return(AVPlugins.Instance.CommandRunner.RunCommandAsync(command).ContinueWith(t => { return AVClient.IsSuccessStatusCode(t.Result.Item1); })); }
/// <summary> /// /// </summary> /// <param name="mobilePhoneNumber"></param> /// <returns></returns> public static Task <bool> RequestVoiceCodeAsync(string mobilePhoneNumber) { if (string.IsNullOrEmpty(mobilePhoneNumber)) { throw new AVException(AVException.ErrorCode.MobilePhoneInvalid, "Moblie Phone number is invalid.", null); } Dictionary <string, object> strs = new Dictionary <string, object>() { { "mobilePhoneNumber", mobilePhoneNumber }, { "smsType", "voice" }, { "IDD", "+86" } }; var command = new AVCommand("requestSmsCode", method: "POST", sessionToken: null, data: strs); return(AVPlugins.Instance.CommandRunner.RunCommandAsync(command).ContinueWith(t => { return AVClient.IsSuccessStatusCode(t.Result.Item1); })); }
/// <summary> /// 获取 LeanCloud 服务器的时间 /// <remarks> /// 如果获取失败,将返回 DateTime.MinValue /// </remarks> /// </summary> /// <returns>服务器的时间</returns> public static Task <DateTime> GetServerDateTimeAsync() { var command = new AVCommand(relativeUri: "date", method: "GET", sessionToken: null, data: null); return(AVPlugins.Instance.CommandRunner.RunCommandAsync(command).ContinueWith(t => { DateTime rtn = DateTime.MinValue; if (AVClient.IsSuccessStatusCode(t.Result.Item1)) { var date = AVDecoder.Instance.Decode(t.Result.Item2); if (date != null) { if (date is DateTime) { rtn = (DateTime)date; } } } return rtn; })); }