2012-08-13 16 views
6

हाल ही में मैंने अपने वेब ऐप के लिए http://code.google.com/p/google-api-php-client/ (Google OAuth2) का उपयोग करना शुरू कर दिया है। हालांकि मैं एक खाली खींचता हूं क्योंकि मैं अपने उपयोगकर्ता के लिए टाइमज़ोन नहीं पढ़ सकता। मैंने इसे अपने Google खाता पृष्ठ पर किसी भी तरह दर्ज करने का प्रयास किया लेकिन मुझे ऐसा कोई फ़ील्ड नहीं मिला। क्या कोई जानता है कि Google वास्तव में ऐसी जानकारी प्रदान करता है और यदि ऐसा है तो मैं इसे अपने खाते में कैसे सेट कर सकता हूं उदाहरण के लिए?Google auth2 एपीआई में टाइमज़ोन जानकारी गुम है?

उत्तर

5

आपके लिए उपलब्ध निकटतम चीज़ आपके Google कैलेंडर पर उपलब्ध टाइमज़ोन है। अपने कैलेंडर सेटिंग्स पृष्ठ पर 'सामान्य' टैब देखें: https://www.google.com/calendar

अब, आप उपयोगकर्ता की कैलेंडर तक पहुंच का अनुरोध कर सकते हैं, जबकि आप उन्हें अपनी सेवा में प्रमाणित कर रहे हैं। दायरे का उपयोग करें "https://www.googleapis.com/auth/calendar" (docs)

जब आप प्रमाणित होते हैं, तो आप request the calendar you're interested in कर सकते हैं। मुझे लगता है कि उपयोगकर्ता का प्राथमिक कैलेंडर आपकी सबसे अच्छी शर्त है।

अंत में, प्रत्येक कैलेंडर में timeZone property के साथ सेटिंग होती है।

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

+0

+1 अच्छी सेवा इंजेक्शन – mate64

1

21 मार्च से, 2013 Google userinfo.profile endpoint के लिए उनकी प्रतिक्रिया में यह जानकारी प्रदान नहीं कर रहा है - भले ही वे दावा करते हैं कि वे करते हैं।

यह प्रलेखन का दावा है कि समय-क्षेत्र उपलब्ध है:

  • आईडी
  • ईमेल
  • को सत्यापित किया
  • नाम
  • : https://developers.google.com/accounts/docs/OAuth2Login?hl=en#userinfocall

    हालांकि, मौजूदा कार्यान्वयन केवल निम्न डेटा रिटर्न

  • दिया_name
  • FAMILY_NAME
  • लिंक (G + प्रोफ़ाइल से, यदि उपलब्ध हो)
  • लिंग
  • जन्मदिन
  • स्थान
  • HD (Google Apps डोमेन प्रतीत होता है, अगर प्रासंगिक)

ध्यान दें कि ऊपर सूचीबद्ध पृष्ठ पर वर्तमान दस्तावेज़ में "जन्मदिन" और "एचडी" सूचीबद्ध नहीं हैं। मैं इन क्षेत्रों को वास्तविक दुनिया प्रतिक्रियाओं से सत्यापित कर रहा हूं जो मुझे अंत बिंदु से प्राप्त हो रहा है।

इस समय टाइमज़ोन प्राप्त करने का सबसे अच्छा तरीका शायद जावास्क्रिप्ट का उपयोग करना है (उपयोगकर्ता के ब्राउज़र से टाइमज़ोन पुनर्प्राप्त करने के लिए)।

Getting the client's timezone in JavaScript

दुर्भाग्य से, यह एक माध्यमिक कार्रवाई के रूप में हो करने के लिए होता है, यानी आप डेटा अंतिम बिंदु से लिया गया से अलग, अपने डेटाबेस में यह डेटा शामिल करना होगा: यह StackOverflow जवाब ऐसा करने का तरीका बताता है । विचार करने के लिए एक चाल उस पृष्ठ पर टाइमज़ोन ऑफ़सेट कैप्चर कर रही है जहां आप एंडपॉइंट अनुरोध शुरू करते हैं, और उसके बाद टाइमऑन ऑफ़सेट मान को आपके OAuth अनुरोध में "स्थिति" मान में जोड़ते हैं।यह मान तब कॉलबैक पर वापस कर दिया जाएगा, और आप इसे निकालने और उस अन्य प्रक्रिया जानकारी में जोड़ सकते हैं जो उसी प्रक्रिया के दौरान लौटाया गया था जिसमें आप अपने डेटाबेस में लिखते हैं।