Niedawno zacząłem używać http://code.google.com/p/google-api-php-client/ (Google OAuth2) dla mojej aplikacji internetowej. Jednak rysuję puste, ponieważ nie mogę odczytać strefy czasowej dla mojego użytkownika. Próbowałem wprowadzić go w jakiś sposób na mojej stronie konta Google, ale nie znalazłem żadnego takiego pola. Czy ktoś wie, czy Google naprawdę oferuje takie informacje, a jeśli tak, to w jaki sposób mogę ustawić to na moim koncie?Google auth2 API brakuje informacji o strefie czasowej?
Odpowiedz
Najbliższa dostępna opcja to strefa czasowa dostępna w kalendarzu Google. Sprawdź kartę "Ogólne" na stronie ustawień kalendarza: https://www.google.com/calendar
Teraz możesz poprosić o dostęp do kalendarza użytkownika podczas uwierzytelniania ich w usłudze. Użyj zakresu "https://www.googleapis.com/auth/calendar" (docs)
Po uwierzytelnieniu możesz request the calendar you're interested in. Domyślam się, że podstawowym kalendarzem użytkownika jest twój najlepszy zakład.
Wreszcie, każdy kalendarz ma ustawienia z timeZone property.
Na dzień 21 marca 2013 Google nie dostarcza te informacje w swojej odpowiedzi na końcowym userinfo.profile - choć twierdzą, że robią.
Dokumentacja ta twierdzi, że strefa czasowa jest dostępny: https://developers.google.com/accounts/docs/OAuth2Login?hl=en#userinfocall
Jednak tylko bieżąca realizacja zwraca następujące dane:
- id
- verified_email
- nazwa
- given_name
- FAMILY_NAME
- Link (G + profilu, jeśli jest dostępny)
- płci
- urodziny
- locale
- hd (wydaje się być domeną Google Apps, jeśli dotyczy)
Zwróć uwagę, że "urodziny" i "hd" nie są wymienione w aktualnej dokumentacji na wyżej wymienionej stronie. Weryfikuję te pola na podstawie odpowiedzi otrzymywanych w czasie rzeczywistym od punktu końcowego.
Najlepszym sposobem na uzyskanie strefy czasowej w tej chwili jest prawdopodobnie użycie JavaScript (w celu pobrania strefy czasowej z przeglądarki użytkownika). Ta odpowiedź StackOverflow wyjaśnia, jak to zrobić:
Getting the client's timezone in JavaScript
Niestety, będzie to musiał wystąpić jako działanie wtórnego, co oznacza, że trzeba dodać te dane do bazy danych oddzielnie od danych pobranych z końcowym . Jedną z rozważanych sztuczek jest przechwytywanie przesunięcia strefy czasowej na stronie, na której inicjowane jest żądanie punktu końcowego, a następnie dołączanie wartości przesunięcia strefy czasowej do wartości "stanu" w żądaniu OAuth.Wartość ta zostanie zwrócona na wywołanie zwrotne i można wyodrębnić ją i dodać do innych informacji profilu, które zostały zwrócone podczas tej samej procedury, w której piszesz do bazy danych.
+1 Niezły zastrzyk serwisowy – mate64