es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Sigue recibiendo el error “Token de ID inválido” con react-native-app-auth.

Actualmente estoy intentando autenticar usuarios con Google OAuth en una aplicación React Native con react-native-app-auth.

Este es mi código:

import * as AppAuth from 'react-native-app-auth';
import { AuthorizationError } from '../errors';
import { GooglePeopleApis } from '@apis';
import { Platform } from 'react-native';

const IOS_CLIENT_ID = "client_id_de_ios"
const ANDROID_CLIENT_ID = "client_id_de_android"

const IOS_REDIRECT_URI = "url_de_redireccion_de_ios"
const ANDROID_REDIRECT_URI = "url_de_redireccion_de_android"

const config = {
  issuer: 'https://accounts.google.com',
  clientId: Platform.select({ios: IOS_CLIENT_ID, android: ANDROID_CLIENT_ID})!,
  redirectUrl: Platform.select({ios: IOS_REDIRECT_URI, android: ANDROID_REDIRECT_URI})!,
  scopes: ['https://mail.google.com/', "profile", "email"]
};

export interface AuthorizationResponse {
  accessToken: string;
  accessTokenExpirationDate: string;
  refreshToken: string;
  emailAddress: string;
}

export const authorize = async (): Promise<authorizationresponse> => {
  try {
    let result = await AppAuth.authorize(config);
    const emailAddress = await GooglePeopleApis.fetchMyEmailAddress(result.accessToken)

    return {
      accessToken: result.accessToken,
      accessTokenExpirationDate: result.accessTokenExpirationDate,
      refreshToken: result.refreshToken,
      emailAddress
    }
  } catch(err) {
    const error = err as Error
    throw new AuthorizationError(error.message);
  }
}

En iOS funciona bien, en Android funcionó la primera vez, pero luego cuando volví al proyecto al día siguiente, comenzó a darme un error como el siguiente:

ReactNativeJS: [Error: Invalid ID Token]

No puedo entender el problema ya que no estoy pasando ningún token de ID en la solicitud de autenticación.
El navegador se abre como se espera, selecciono mi cuenta de Google, pero luego devuelve este error.

react-native: 0.66.3
react-native-app-auth: 6.4.0

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el error que estás recibiendo, “Token de ID no válido”, podría deberse a la expiración del token de ID utilizado en la solicitud de autorización inicial.

    En tu código, estás solicitando ciertos alcances, incluido el alcance de correo electrónico, que requiere un token de ID para recuperar la dirección de correo electrónico del usuario. Es posible que el token de ID haya caducado entre la primera vez que usaste la aplicación y la segunda vez, lo que causó el error.

    Una solución podría ser actualizar el token de autorización periódicamente para asegurarte de que el token de ID siga siendo válido. Podrías hacer esto agregando una comprobación para ver si el token de autorización ha expirado y, si es así, usar el token de actualización para obtener un nuevo token de autorización antes de realizar cualquier solicitud posterior.

    También podrías intentar usar el depurador para ver qué está sucediendo durante el proceso de autenticación y ver si se están produciendo otros errores.

Comments are closed.