/// <summary> /// 刷新令牌 /// </summary> /// <returns></returns> public async Task <bool> RefreshTokenAsync() { try { var param = $"access_token={_accessToken}&refresh_token={_refreshToken}&appkey={BiliTool.AndroidKey.Appkey}&ts={AppTool.GetNowSeconds()}"; param += "&sign=" + BiliTool.GetSign(param); var content = await BiliTool.PostContentToWebAsync(Api.PASSPORT_REFRESH_TOKEN, param); var obj = JObject.Parse(content); if (Convert.ToInt32(obj["code"]) == 0) { var data = JsonConvert.DeserializeObject <TokenInfo>(obj["data"].ToString()); var package = new TokenPackage(data.access_token, data.refresh_token, AppTool.DateToTimeStamp(DateTime.Now.AddSeconds(data.expires_in))); InitToken(package); TokenChanged?.Invoke(this, package); await SSO(); return(true); } return(false); } catch (Exception) { return(false); } }
/// <summary> /// 登录 /// </summary> /// <param name="userName">用户名</param> /// <param name="password">密码</param> /// <param name="captcha">验证码</param> /// <returns></returns> public async Task <LoginCallback> LoginAsync(string userName, string password, string captcha = "") { string param = $"appkey={BiliFactory.AndroidKey.Appkey}&build={BiliFactory.BuildNumber}&mobi_app=android&password={Uri.EscapeDataString(await BiliFactory.EncryptAsPasswordAsync(password))}&platform=android&ts={BiliFactory.GetNowSeconds()}&username={Uri.EscapeDataString(userName)}"; if (!string.IsNullOrEmpty(captcha)) { param += "&captcha=" + captcha; } param += "&sign=" + BiliFactory.GetSign(param); string response = await BiliClient.PostContentToWebAsync(Api.PASSPORT_LOGIN, param); var result = new LoginCallback(); result.Status = LoginResultType.Error; if (!string.IsNullOrEmpty(response)) { try { var jobj = JObject.Parse(response); int code = Convert.ToInt32(jobj["code"]); if (code == 0) { var data = JsonConvert.DeserializeObject <LoginResult>(jobj["data"].ToString()); var package = new TokenPackage(data.token_info.access_token, data.token_info.refresh_token, BiliFactory.GetTimeStampFuture(data.token_info.expires_in)); InitToken(package); TokenChanged?.Invoke(this, package); result.Status = LoginResultType.Success; await SSO(); await GetUserSpaceAsync(286725648); } else if (code == -2100) { result.Status = LoginResultType.NeedValidate; result.Url = jobj["url"].ToString(); } else if (code == -105) { result.Status = LoginResultType.NeedCaptcha; } else if (code == -449) { result.Status = LoginResultType.Busy; } else { result.Status = LoginResultType.Fail; } } catch (Exception) { return(new LoginCallback { Status = LoginResultType.Fail, Url = "" }); } } return(result); }
private void TokenChanging(Token value) { if (value != null) { _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(value.Token_Type, value.Access_Token); } else { _client.DefaultRequestHeaders.Authorization = null; } TokenChanged?.Invoke(); }
/// <summary> /// 登陆成功后设置令牌状态 /// </summary> /// <param name="accessToken">令牌</param> /// <param name="mid">用户ID</param> /// <returns></returns> public async Task <bool> SetLoginStatusAsync(string accessToken, string refreshToken = "", int expiry = 0) { try { string refe = string.IsNullOrEmpty(refreshToken) ? accessToken : refreshToken; var package = new TokenPackage(accessToken, refe, AppTool.DateToTimeStamp(DateTime.Now.AddSeconds(expiry == 0 ? 7200 : expiry))); InitToken(package); TokenChanged?.Invoke(this, package); await SSO(); return(true); } catch (Exception) { return(false); } }
public Task OnTokenRefreshAsync() { TokenChanged?.Invoke(this, new FCMTokenChangedEventArgs(Messaging.SharedInstance.FcmToken)); return(Task.CompletedTask); }
protected void OnTokenChanged() { TokenChanged?.Invoke(this, EventArgs.Empty); }
public static void SetToken(string token) { client = new DisClient(new TokenAuthenticationInformation(token), "DiscogsDesktop", 10000); TokenChanged?.Invoke(); }
public void SetToken(SecureString secureToken) { _secureToken = secureToken; TokenChanged?.Invoke(this, EventArgs.Empty); }
public async Task OnTokenRefreshAsync() { TokenChanged?.Invoke(this, new FCMTokenChangedEventArgs(await GetTokenAsync())); }
private void NotifyTokenChanged() { TokenChanged?.Invoke(this, null); }