2012-08-13 10 views
6

gần đây tôi đã bắt đầu sử dụng http://code.google.com/p/google-api-php-client/ (Google OAuth2) cho ứng dụng web của tôi. Tuy nhiên tôi vẽ một khoảng trắng vì tôi không thể đọc múi giờ cho người dùng của mình. Tôi đã thử nhập bằng cách nào đó trên trang tài khoản Google của mình nhưng tôi không tìm thấy bất kỳ trường nào như vậy. Có ai biết nếu Google thực sự cung cấp thông tin như vậy và nếu vậy làm thế nào tôi có thể đặt nó vào tài khoản của tôi chẳng hạn?API Google auth2 có thiếu thông tin múi giờ không?

Trả lời

5

Điều gần nhất có sẵn cho bạn là múi giờ khả dụng trên lịch Google của bạn. Kiểm tra tab 'Chung' trên trang cài đặt lịch của bạn: https://www.google.com/calendar

Bây giờ, bạn có thể yêu cầu quyền truy cập vào lịch của người dùng trong khi xác thực chúng với dịch vụ của bạn. Sử dụng phạm vi "https://www.googleapis.com/auth/calendar" (docs)

Khi bạn được xác thực, bạn có thể request the calendar you're interested in. Tôi đoán lịch chính của người dùng là đặt cược tốt nhất của bạn.

Cuối cùng, mỗi lịch có cài đặt với timeZone property.

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

+0

+1 Dịch vụ phun tốt – mate64

1

Tính đến ngày 21 tháng 3 năm 2013 của Google không cung cấp thông tin này trong phản ứng của họ với thiết bị đầu cuối userinfo.profile - mặc dù họ cho rằng họ làm.

tài liệu này khẳng định rằng múi giờ đã có sẵn: https://developers.google.com/accounts/docs/OAuth2Login?hl=en#userinfocall

Tuy nhiên, việc thực hiện hiện nay chỉ trả về dữ liệu sau:

  • id
  • email
  • nhận VERIFIED_EMAIL
  • tên
  • given_name
  • FAMILY_NAME
  • liên kết (G + hồ sơ, nếu có)
  • giới
  • sinh nhật
  • locale
  • hd (dường như là tên miền Google Apps, nếu có liên quan)

Lưu ý rằng "ngày sinh" và "hd" không được liệt kê trong tài liệu hiện tại trên trang được liệt kê ở trên. Tôi đang xác minh các trường này từ các phản hồi trong thế giới thực mà tôi nhận được từ điểm cuối.

Cách tiếp cận tốt nhất để nhận múi giờ tại thời điểm này có lẽ là sử dụng JavaScript (để truy xuất múi giờ từ trình duyệt của người dùng). câu trả lời StackOverflow này giải thích làm thế nào để làm như vậy:

Getting the client's timezone in JavaScript

Thật không may, điều này sẽ phải xảy ra như một hành động thứ cấp, có nghĩa là bạn phải thêm dữ liệu này để cơ sở dữ liệu của bạn tách biệt khỏi dữ liệu lấy từ các thiết bị đầu cuối . Một mẹo cần xem xét là ghi lại chênh lệch múi giờ trên trang nơi bạn bắt đầu yêu cầu điểm cuối và sau đó thêm giá trị bù trừ múi giờ vào giá trị "trạng thái" trong yêu cầu OAuth của bạn.Giá trị này sau đó sẽ được trả về trên gọi lại, và bạn có thể trích xuất và thêm nó vào thông tin hồ sơ khác được trả lại trong cùng một thủ tục mà bạn ghi vào cơ sở dữ liệu của mình.