Я получаю эту ошибку при обновлении токена доступа: токен доступа не может быть обновлен. Повторите проверку подлинности
. Об этой ошибке ранее сообщалось в апреле 2017 г. Документы OneLogin заявляют, что токен обновления действителен в течение 45 дней или около того. Моему токену обновления было около 20 часов. Правильно ли доку или токен обновления имеет более короткую продолжительность жизни? Я могу нормально получить токен доступа и отменить токен.
public RootObject RefreshToken (HttpRequesterDM rDM) {RestSharp.Deserializers.JsonDeserializer deserial = new RestSharp.Deserializers.JsonDeserializer ();var client = новый RestClient ("https://api.us.onelogin.com/auth/oauth2/token"); var request = новый RestRequest (Method.POST); строка clientAuth = $" client_id: {rDM.ClientID}, client_secret: {rDM.ClientSecret} "; строка accessToken = DSBase.AccessToken; строка refreshToken = DSBase.refreshToken; request.AddHeader ("cache-control", "no-cache"); request.AddHeader ("content-type", "application / json"); request.RequestFormat = DataFormat. Json; request.AddParameter ("application / json", "{\ n \" grant_type \ ": \" refresh_token \ "\ n}", ParameterType.RequestBody); request.AddHeader ("авторизация", clientAuth);
request.AddParameter("application/json", "{\n\"access_token\":\" + accessToken + \"\n}", ParameterType.RequestBody);
request.AddParameter("application/json", "{\n\"refresh_token\":\" + refreshToken + \"\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
RootObject returnData = deserial.Deserialize<RootObject>(response);
if (returnData.status.message == "Access token cannot be refreshed. Please re-authenticate")
{
RootObject rObject = GetToken(rDM);
return rObject;
}
if (returnData.data[0].access_token != null)
{
access = returnData.data[0].access_token; //This correctly gets the Access Token. You should return this to a class variable so that all the other functions can access it easily and you're not constantly passing along the variable through them.
}
return returnData;