Mensagem 403: A API de pessoas herdadas não foi usada no projeto

14

A API do Google está ativa, mas dá erro; A API de pessoas herdadas não foi usada no projeto antes ou está desativada. Habilite-o visitando https://console.developers.google.com/apis/api/legacypeople.googleapis.com/overview?project= e tente novamente. Se você ativou esta API recentemente, aguarde alguns minutos para que a ação seja propagada para nossos sistemas e tente novamente.

Ömer ARGIN
fonte
A solicitação requer o número da sua Conta do Google; caso contrário, a conexão falhará.
Jdweng 31/10/19
Corri o seu id com forma de código seguinte e dizer inválido chave: stackoverflow.com/questions/34597229/...
jdweng
porque ? mas o cliente ID é verdade
Ömer Argin
2
Eu tenho exatamente o mesmo erro, que começou na semana passada. Você encontrou uma maneira de consertar isso? Eu sinto que algo deu errado no lado do Google com o meu registro ClientId ... Talvez eles estivessem trabalhando em alguma coisa e tivemos o "efeito colateral"?
precisa saber é o seguinte
2
Alguém conseguiu encontrar uma solução para este erro? Só estou tentando implementar o Login do Google e o erro ainda ocorre em janeiro de 2020. Alguém?
regan 6/01

Respostas:

6

Você não precisa instalar outras APIs, como a API do Google Drive, a API do Planilhas Google ou outra, exceto a API do Google+,

O erro está ocorrendo devido a "passport-google-oauth": "^ 1.0.0"

Apenas altere a versão "passport-google-oauth": "^ 1.0.0" para "passport-google-oauth": "^ 2.0.0" e remova o arquivo node_modules e package.lock.json e execute "npm i"

É isso aí

Mohd Sahil
fonte
você é demais! Obrigado! Na verdade [email protected], eu estava usando , então eu o removi e instalei a 2.0versão depois de ler sua resposta e funcionou.
Daniel
Graças cara ele trabalha, você é campeão
Bhagvat Lande 02/04
2

Antes do encerramento da API do Google+ em 7 de março de 2019, os métodos people.get e people.getOpenIdConnect estavam disponíveis para solicitar o perfil de uma pessoa.

Para evitar a quebra de integrações existentes com esses métodos que dão suporte à entrada, uma nova implementação mínima retorna apenas os campos básicos necessários para essa funcionalidade, como nome e endereço de email, se autorizados pelo usuário. A API Legacy People é onde esses métodos permanecerão disponíveis para chamadores existentes nos terminais HTTP existentes.

A API do Legacy People oferece uma nova implementação limitada dos métodos people.get e people.getOpenIdConnect da API do Google+ herdada, necessários para manter a funcionalidade de login. Está disponível para chamadores existentes dos métodos originais que não foram migrados para substituições recomendadas, como o Login do Google ou a API do Google People, no momento do encerramento da API do Google+.

insira a descrição do link aqui

obrigado

Ilan Laloum
fonte
1

Nesse caso, estou enfrentando o mesmo problema. Isto é o que eu fiz para corrigi-lo.

Situação:

  • NodeJS ver 8
  • "passaporte-google-oauth": "^ 1.0.0"
  • Usando a API do Google+ como login do Google

Quando executo os aplicativos e clico em Fazer login no Google, o que aconteceu?

Como eu resolvo isso?

  • Vá para o Google Console
  • Clique na API do Google+ em Social APIs e clique em Ativar API
  • Clique na API do Google Drive em G Suite e clique em Ativar API
  • Clique na API do Planilhas Google no G Suite e clique em Ativar API
  • Atualize "passport-google-oauth": "^ 1.0.0" para "passport-google-oauth": "^ 2.0.0" em package.json
  • remova a pasta package-lock.json e node_modules (para garantir que tudo esteja claro)
  • execute este comando: npm install
  • Funciona agora!

Nota: meu código anterior ainda está usando profile._json.image.url para obter a imagem do perfil. Na verdade, essa resposta não estava mais lá. Então, eu apago este código. Adeus, Google+ Obrigado Google People API.

Bobby
fonte
Isso me dá um erro:There was an error while loading /apis/api/legacypeople.googleapis.com/overview?project=xxxx. Please try again.
Jim.B
você seguiu os passos?
Bobby
0

A ativação da API de contatos do Google e da API do Google+ corrigiu esse problema para mim.

Memuna
fonte
Olá, esta ação deve ter sido válida quando você a fez. A partir de agora (2020), a API do Google+ foi completamente desativada para novos projetos.
avi.elkharrat 13/01
0

Olá, recentemente tropecei no mesmo problema. Conforme explicado por Ilan Laloum, a API do Google+ foi completamente desativada para novos projetos.

Descobri que a API de pessoas do Google funciona de maneira semelhante. O exemplo a seguir é baseado no tutorial Bookshelf no GCP. O código-fonte pode ser visto aqui: https://github.com/GoogleCloudPlatform/golang-samples/tree/appengine/go111/cloudsql/getting-started/bookshelf (filial 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()
}

Esse método precisa de um contexto e um token OAuth, como costumava ser a API do Google+. O peopleServiceé inicializado de maneira semelhante.

O peopleService.People.Get("people/me")prepara uma consulta que busca o perfil do usuário conectado. Então PersonFields("names,coverPhotos,emailAddresses")é um filtro nos campos de perfil. Esta parte da solicitação é obrigatória. Eventualmente Do(), executará a solicitação.

avi.elkharrat
fonte
0

Esse problema pode ser corrigido usando o 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
fonte