2012-08-13 6 views
6

Recientemente, he comenzado a usar http://code.google.com/p/google-api-php-client/ (Google OAuth2) para mi aplicación web. Sin embargo, hago un espacio en blanco porque no puedo leer la zona horaria de mi usuario. Intenté ingresar de alguna manera en la página de mi cuenta de Google, pero no encontré ningún campo. ¿Alguien sabe si Google realmente ofrece esa información y, de ser así, cómo puedo configurarla en mi cuenta, por ejemplo?Google auth2 API ¿falta información sobre la zona horaria?

Respuesta

5

Lo más parecido a usted es la zona horaria disponible en su calendario de Google. Compruebe la pestaña 'General' en la página de configuración de su calendario: https://www.google.com/calendar

Ahora puede solicitar el acceso al calendario del usuario mientras los autentica en su servicio. Use el alcance "https://www.googleapis.com/auth/calendar" (docs)

Cuando está autenticado, puede request the calendar you're interested in. Supongo que el calendario principal del usuario es su mejor apuesta.

Finalmente, cada calendario tiene configuraciones con timeZone property.

Here's sample code for the Google API PHP client.

+0

+1 Niza inyección de servicio – mate64

1

Como 21 de marzo de 2013 Google no proporciona esta información en su respuesta al punto final userinfo.profile - a pesar de que afirman que lo hacen.

Esta documentación afirma que la zona horaria está disponible: https://developers.google.com/accounts/docs/OAuth2Login?hl=en#userinfocall

Sin embargo, la implementación actual sólo devuelve los siguientes datos:

  • Identificación
  • correo electrónico
  • verified_email
  • nombre
  • given_name
  • FAMILY_NAME
  • enlace (a G + perfil, si está disponible)
  • género
  • cumpleaños
  • local
  • HD (parece ser el dominio de Google Apps, si es relevante)

Tenga en cuenta que "cumpleaños" y "hd" no figuran en la documentación actual en la página mencionada anteriormente. Estoy verificando estos campos de las respuestas del mundo real que estoy recibiendo desde el punto final.

El mejor enfoque para obtener la zona horaria en este momento es probablemente utilizar JavaScript (para recuperar la zona horaria del navegador del usuario). Esta respuesta StackOverflow explica cómo hacerlo:

Getting the client's timezone in JavaScript

Desafortunadamente, esto tendría que ocurrir como una acción secundaria, lo que significa que tendría que agregar estos datos a su base de datos por separado de los datos recuperados desde el punto final . Un truco a tener en cuenta es capturar el desplazamiento de la zona horaria en la página donde inicia la solicitud de punto final y luego agregar el valor de compensación de la zona horaria al valor de "estado" en su solicitud de OAuth.Este valor se devolverá en la devolución de llamada, y puede extraerlo y agregarlo a la información del otro perfil que se devolvió durante el mismo procedimiento en el que escribe en su base de datos.

Cuestiones relacionadas