/// <summary> /// 获取 AccessToken /// </summary> /// <param name="client">京东对接信息</param> /// <exception cref="ArgumentNullException"> /// <paramref name="client"/> 不能为 <see langword="null"/>。 /// </exception> public static async Task <RspResult <Oauth2Token> > Oauth2AccessTokenAsync(VopClient client) { if (client == null) { throw new ArgumentNullException($"{nameof(client)} 不能为 null"); } var grant_type = "access_token"; var timestamp = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); var passwd = client.Password; using var md5 = MD5.Create(); if (string.IsNullOrEmpty(passwd) == false) { passwd = BitConverter.ToString(md5.ComputeHash(Encoding.UTF8.GetBytes(passwd))).Replace("-", "").ToLower(); } var sign = client.ClientSecret + timestamp + client.ClientId + client.UserName + passwd + grant_type + client.ClientSecret; sign = BitConverter.ToString(md5.ComputeHash(Encoding.UTF8.GetBytes(sign))).Replace("-", "").ToUpper(); var url = "/oauth2/accessToken"; var parameter = new Dictionary <string, string> { { "grant_type", grant_type }, { "client_id", client.ClientId }, { "timestamp", timestamp }, { "username", client.UserName }, { "password", passwd }, { "sign", sign }, }; return(await PostAsync <Oauth2Token>(url, parameter)); }
/// <summary> /// 刷新 AccessToken /// </summary> /// <param name="client">京东对接信息</param> /// <param name="refreshToken">授权获取 AccessToken 时返回的 RefreshToken</param> /// <exception cref="ArgumentNullException"> /// <paramref name="client"/> 不能为 <see langword="null"/>。 /// </exception> /// <exception cref="ArgumentException"> /// <paramref name="refreshToken"/> 不能为 <see langword="null"/> 或 空字符串("")。 /// </exception> public static async Task <RspResult <Oauth2Token> > Oauth2RefreshATokenAsync(VopClient client, string refreshToken) { if (client == null) { throw new ArgumentNullException(nameof(client), $"{nameof(client)} 不能为 null"); } if (string.IsNullOrEmpty(refreshToken)) { throw new ArgumentException($"{nameof(refreshToken)} 不能为 null 或 空字符", nameof(refreshToken)); } var url = "/oauth2/refreshToken"; var parameter = new Dictionary <string, string> { { "refresh_token", refreshToken }, { "client_id", client.ClientId }, { "client_secret", client.ClientSecret }, }; return(await PostAsync <Oauth2Token>(url, parameter)); }