Mensaje 403: Legacy People API no se ha utilizado en el proyecto

14

La API de Google está activa pero da error; Legacy People API no se ha utilizado antes en el proyecto o está deshabilitado. Habilítelo visitando https://console.developers.google.com/apis/api/legacypeople.googleapis.com/overview?project= luego vuelva a intentarlo. Si habilitó esta API recientemente, espere unos minutos para que la acción se propague a nuestros sistemas y vuelva a intentarlo.

Ömer ARGIN
fuente
La solicitud requiere su número de cuenta de Google, de lo contrario, la conexión fallará.
jdweng
Ejecuté su identificación con el siguiente formulario de código y dice clave inválida: stackoverflow.com/questions/34597229/…
jdweng
por qué ? pero la identificación del cliente es verdadera
Ömer ARGIN
2
Tengo exactamente el mismo error, comenzó desde la semana pasada. ¿Has encontrado una manera de arreglar eso? Siento que algo salió mal en el lado de Google con mi registro ClientId ... ¿Tal vez estaban trabajando en algo y obtuvimos el "efecto secundario"?
Axel186
2
¿Alguien logró encontrar una solución a este error? Solo intento implementar el inicio de sesión de Google y el error aún ocurre en enero de 2020. ¿Alguien?
Regan

Respuestas:

6

No necesita instalar ninguna otra API, como la API de Google Drive, la API de Google Sheets u otra, excepto la API de Google+,

El error se produce debido a "passport-google-oauth": "^ 1.0.0"

Simplemente cambie la versión "passport-google-oauth": "^ 1.0.0" a "passport-google-oauth": "^ 2.0.0" y elimine node_modules y package.lock.json y ejecute "npm i"

Eso es

Mohd Sahil
fuente
¡tú Molas! ¡Gracias! En realidad estaba usando [email protected], así que lo eliminé e instalé la 2.0versión después de leer su respuesta y funcionó.
Daniel
Gracias hombre, funciona, eres campeón
Bhagvat Lande
2

Antes del cierre de la API de Google+ el 7 de marzo de 2019, los métodos people.get y people.getOpenIdConnect estaban disponibles para solicitar el perfil de una persona.

Para evitar romper las integraciones existentes con estos métodos que admiten el inicio de sesión, una nueva implementación mínima solo devuelve los campos básicos necesarios para esa funcionalidad, como el nombre y la dirección de correo electrónico, si el usuario lo autoriza. La API de Legacy People es donde estos métodos permanecerán disponibles para los llamantes existentes en los puntos finales HTTP existentes.

La API Legacy People ofrece una nueva implementación limitada de los métodos heredados people.get y people.getOpenIdConnect de la API de Google+ para mantener la funcionalidad de inicio de sesión. Está disponible para las personas que llaman existentes de los métodos originales que no han migrado a reemplazos recomendados como el inicio de sesión de Google o la API de Google People en el momento del cierre de la API de Google+.

ingrese la descripción del enlace aquí

Gracias

Ilan Laloum
fuente
1

En este caso, me enfrento al mismo problema. Esto es lo que he hecho para solucionarlo.

Situación:

  • NodoJS ver 8
  • "passport-google-oauth": "^ 1.0.0"
  • Uso de la API de Google+ como inicio de sesión de Google

Cuando ejecuto las aplicaciones y hago clic en Iniciar sesión con Google, ¿qué pasó entonces?

¿Cómo lo resuelvo?

  • Ir a la consola de Google
  • Haga clic en la API de Google+ en las API sociales, luego haga clic en Habilitar API
  • Haga clic en la API de Google Drive en G Suite, luego haga clic en Habilitar API
  • Haga clic en Google Sheets API en G Suite, luego haga clic en Habilitar API
  • Actualice "passport-google-oauth": "^ 1.0.0" a "passport-google-oauth": "^ 2.0.0" en package.json
  • elimine la carpeta package-lock.json y node_modules (para asegurarse de que todo esté claro)
  • ejecuta este comando: npm install
  • ¡Ahora funciona!

Nota: mi código anterior todavía usa profile._json.image.url para obtener la imagen de perfil. En realidad, esta respuesta ya no estaba allí. Entonces borro este código. Adiós Google+ Gracias API de Google People.

Poli
fuente
Esto me da un error:There was an error while loading /apis/api/legacypeople.googleapis.com/overview?project=xxxx. Please try again.
Jim.B
has seguido los pasos?
Bobby
0

Habilitar la API de contactos de Google y la API de Google+ solucionó este problema.

Memuna
fuente
Hola, esta acción debe haber sido válida para cuando la hiciste. A partir de ahora (2020), la API de Google+ se ha retirado por completo para nuevos proyectos.
avi.elkharrat
0

Hola, recientemente me topé con el mismo problema. Según lo explicado por Ilan Laloum, la API de Google+ se retiró por completo para nuevos proyectos.

Descubrí que la API de Google People funciona de manera similar. El siguiente ejemplo se basa en el tutorial de Bookshelf en GCP. El código fuente se puede ver aquí: https://github.com/GoogleCloudPlatform/golang-samples/tree/appengine/go111/cloudsql/getting-started/bookshelf (branch appengine/go111/cloudsql)

import people "google.golang.org/api/people/v1"

...

// retrieves the profile of the user associated with the provided OAuth token
func fetchProfile(ctx context.Context, tok *oauth2.Token) (*people.Person, error) {
peopleService, err := people.NewService(ctx, option.WithTokenSource(bookshelf.OAuthConfig.TokenSource(ctx, tok)))
if err != nil {
    return nil, err
}

return peopleService.People.Get("people/me").
    PersonFields("names,coverPhotos,emailAddresses").
    Do()
}

Este método necesita un contexto y un token OAuth, tal como solía hacerlo la API de Google+. El peopleServicese inicializa de manera similar.

El peopleService.People.Get("people/me")prepara una consulta que obtiene el perfil del usuario conectado. Luego PersonFields("names,coverPhotos,emailAddresses")hay un filtro en los campos de perfil. Esta parte de la solicitud es obligatoria. Eventualmente Do()ejecutará la solicitud.

avi.elkharrat
fuente
0

Este problema se puede solucionar usando el passport-google-token

npm install passport-google-token

const GoogleStrategy = require('passport-google-token').Strategy;

// Google OAuth Strategy
passport.use('googleToken', new GoogleStrategy({
    clientID: CLIENT_ID,
    clientSecret: CLIENT_SECRET
}, async (accessToken, refreshToken, profile, done) => {
    try {
        console.log('creating a new user')
        const newUser = new User({
            google: {
                id: profile.id,
                email: profile.emails[0].value
            }
        });

        await newUser.save();
        done(null, newUser);
    } catch (error) {
        done(error, false, error.message);
    }
}));
Suresh Mangs
fuente