Google Iniciar sesión gapi undefined

Estoy intentando habilitar el inicio de sesión con google en mi sitio. El botón funciona, se sincroniza con mi cuenta, pero no puedo acceder al userId desde google. Esto es lo que está en mi cabeza.

 (function() { var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; po.src = 'https://plus.google.com/js/client:plusone.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); })();  

Y aquí es donde estoy tratando de obtener el ID del usuario. En la consola Uncaught ReferenceError: gapi is not defined. el mensaje de error Uncaught ReferenceError: gapi is not defined. Pensé que estaba llamando a gapi en la fuente de arriba. Cualquier ayuda o sugerencia sería muy apreciada.

 $('document').ready(function(){ var request = gapi.client.plus.people.get({ 'userId' : 'me' }); request.execute(function(resp) { console.log('ID: ' + resp.id); console.log('Display Name: ' + resp.displayName); console.log('Image URL: ' + resp.image.url); console.log('Profile URL: ' + resp.url); }); }); 

Su código está llamando gapi.client.plus.people.get método gapi.client.plus.people.get antes de cargar la biblioteca google api https://plus.google.com/js/client:plusone.js . Por lo tanto, está recibiendo gapi no se define el error.

Enfoque al trabajo-

  1. ¿Por qué no está funcionando?

Llamamos a https://plus.google.com/js/client:plusone.js forma asincrónica (sin locking) para mejorar el rendimiento. Con la carga del archivo Async javascript, no puedes invocar el método gapi en la carga del cuerpo.

   
  1. Para realizar la llamada api, primero debe saber que el archivo javascript se ha cargado correctamente.
  2. Para esto tienes que llamar al método usando la callback. https://apis.google.com/js/client:plusone.js?onload=makeAPICall

  3. Escriba una solicitud de API y ejecútela en el método de callback para obtener datos.

Ver ejemplo abajo para esto-

           

Conclusión: Llamar a API de JavaScript antes de cargar la biblioteca de cliente asíncrona.

To avoid "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup.". Call makeAPICall() method only when user is logged in not on every request.