3

J'ai une application ios et une application web qui obtient l'autorisation des utilisateurs et génère un authcode et l'envoie au servlet backend java qui essaie pour échanger le code d'authentification pour accéder aux jetons d'actualisation &. L'échange du code d'authentification de l'application Web fonctionne, mais pour les authcodes générés à partir de l'application ios, j'obtiens l'erreur suivante pendant l'échange.Redirect_uri lorsque j'essaie d'échanger un code d'authentification depuis le serveur backend lorsque le code d'authentification a été reçu dans une application ios

com.google.api.client.auth.oauth2.TokenResponseException: 400 Bad Request { "erreur": "invalid_request", "ERROR_DESCRIPTION": "Paramètre manquant: redirect_uri" }

C'est le code qui fait l'échange

 public OAuthCodeExchangeResponse exchangeAuthCode(String authCode, boolean isIosApp) throws JSONException, IOException { 
OAuthCodeExchangeResponse response = new OAuthCodeExchangeResponse(); 
GoogleClientSecrets clientSecrets = getClientSecrets(isIosApp); 
// Build flow and trigger user authorization request. 
GoogleAuthorizationCodeFlow flow = 
    new GoogleAuthorizationCodeFlow.Builder(
     HTTP_TRANSPORT, JSON_FACTORY, clientSecrets, SCOPES) 
     .setAccessType("offline") 
     .build(); 
GoogleTokenResponse tokenResponse = null; 
if(isIosApp == false) { 
    tokenResponse = flow.newTokenRequest(authCode) 
     .setRedirectUri("postmessage") 
     .execute(); 
} else { 
    tokenResponse = flow.newTokenRequest(authCode).execute(); 
} 
GoogleIdToken idToken = tokenResponse.parseIdToken(); 
GoogleIdToken.Payload payload = idToken.getPayload(); 
response.setAccessToken(tokenResponse.getAccessToken()); 
response.setEmail(payload.getEmail()); 
response.setIdToken(tokenResponse.getIdToken()); 
response.setRefreshToken(tokenResponse.getRefreshToken()); 
return response; 
} 

public GoogleClientSecrets getClientSecrets(boolean isIosApp) throws JSONException, IOException { 
GoogleClientSecrets.Details d = new GoogleClientSecrets.Details(); 
if(isIosApp == false) { 
    d.setClientId(WebClientId); 
    d.setClientSecret(WebClientSecret); 
} else { 
    d.setClientId(PhoneClientId); 
} 
GoogleClientSecrets clientSecrets = new GoogleClientSecrets(); 
clientSecrets.setInstalled(d); 
return clientSecrets; 
} 

que redirect_uri dois-je mettre lors de l'échange du code d'autorisation généré par les ios application? Les informations d'identification créées pour l'application ios dans la console des développeurs google ne disposent pas d'une redirection uri définie btw.

Répondre