@@ -32,6 +32,9 @@ import software.aws.toolkits.jetbrains.core.credentials.sso.PKCEAuthorizationGra
3232import software.aws.toolkits.jetbrains.core.credentials.sso.PKCEClientRegistration
3333import software.aws.toolkits.jetbrains.core.credentials.sso.bearer.buildUnmanagedSsoOidcClient
3434import software.aws.toolkits.resources.AwsCoreBundle
35+ import software.aws.toolkits.telemetry.AuthType
36+ import software.aws.toolkits.telemetry.AwsTelemetry
37+ import software.aws.toolkits.telemetry.MetricResult
3538import java.math.BigInteger
3639import java.time.Instant
3740import java.util.Base64
@@ -67,6 +70,8 @@ class ToolkitOAuthService : OAuthServiceBase<AccessToken>() {
6770 override fun handleOAuthServerCallback (path : String , parameters : Map <String , List <String >>): OAuthService .OAuthResult <AccessToken >? {
6871 val request = currentRequest.get() ? : return OAuthService .OAuthResult (null , false )
6972 val toolkitRequest = request.request as ? ToolkitOAuthRequest ? : return OAuthService .OAuthResult (request.request, false )
73+ toolkitRequest.error = OAuthError (error = " error" , errorDescription = " errorDescription" )
74+ return OAuthService .OAuthResult (toolkitRequest, false )
7075
7176 val callbackState = parameters[" state" ]?.firstOrNull()
7277 if (toolkitRequest.csrfToken != callbackState) {
@@ -189,13 +194,23 @@ internal class ToolkitOAuthCallbackHandler : OAuthCallbackHandlerBase() {
189194 " scopes" to ApplicationNamesInfo .getInstance().fullProductName
190195 )
191196 } else {
192- val (error, errorDescription) = (oAuthResult.request as ? ToolkitOAuthRequest )?.error ? : OAuthError (null , null )
197+ val toolkitRequest = (oAuthResult.request as ? ToolkitOAuthRequest )
198+ val (error, errorDescription) = toolkitRequest?.error ? : OAuthError (null , null )
193199 val errorString = if (error != null && errorDescription != null ) {
194200 " $error : $errorDescription "
195201 } else {
196202 errorDescription ? : error ? : AwsCoreBundle .message(" general.unknown_error" )
197203 }
198204
205+ AwsTelemetry .loginWithBrowser(
206+ project = null ,
207+ credentialStartUrl = toolkitRequest?.registration?.issuerUrl,
208+ result = MetricResult .Failed ,
209+ reason = error,
210+ reasonDesc = errorDescription,
211+ authType = AuthType .PKCE
212+ )
213+
199214 mapOf (
200215 " error" to errorString
201216 )
0 commit comments