Я использую Cognito для входа в мое приложение Xamarin.Forms . Все функции работают нормально, кроме RefreshToken
, пожалуйста, мне нужен кто-нибудь, помогите мне, я не могу точно решить проблему.
Это код моей RefreshToken
функции:
public async Task<SignInContext> RefreshToken(string userName, string idToken, string accessToken, String refreshToken, DateTime issued, DateTime expires, string deviceKey)
{
try
{
using (var provider = new AmazonCognitoIdentityProviderClient(new AnonymousAWSCredentials(), RegionEndpoint))
{
CognitoUserPool userPool = new CognitoUserPool(PoolId, ClientId, provider);
CognitoUser user = new CognitoUser(userName, ClientId, userPool, provider)
{
SessionTokens = new CognitoUserSession(idToken, accessToken, refreshToken, issued, expires)
};
//user.Device = new CognitoDevice(deviceKey, new Dictionary<string, string>(), DateTime.Now, DateTime.Now, DateTime.Now, user);
AuthFlowResponse context = await user.StartWithRefreshTokenAuthAsync(new InitiateRefreshTokenAuthRequest
{
AuthFlowType = AuthFlowType.REFRESH_TOKEN_AUTH
}).ConfigureAwait(true);
// TODO handle other challenges
return new SignInContext(CognitoResult.Ok)
{
//User = user,
IdToken = context.AuthenticationResult?.IdToken,
RefreshToken = context.AuthenticationResult?.RefreshToken,
AccessToken = context.AuthenticationResult?.AccessToken,
TokenIssued = user.SessionTokens.IssuedTime,
Expires = user.SessionTokens.ExpirationTime,
SessionId = context.SessionID
};
}
}
catch (NotAuthorizedException)
{
return new SignInContext(CognitoResult.NotAuthorized);
}
catch (Exception e)
{
Console.WriteLine($"RefreshToken() threw an exception {e}");
}
return new SignInContext(CognitoResult.Unknown);
}