Как впервые использовать Google Calendar API в Linux? - PullRequest
0 голосов
/ 31 января 2019

Вы можете использовать google-calerdar-api по этой ссылке .

Я использую этот код (python3.X) для получения данных календаря в windows 10.

Python Code:

from __future__ import print_function
from googleapiclient.discovery import build
from httplib2 import Http
from oauth2client import file, client, tools

SCOPES = 'https://www.googleapis.com/auth/calendar'

def main():
    store = file.Storage('token.json')
    creds = store.get()
    if not creds or creds.invalid:
        flow = client.flow_from_clientsecrets('./credentials.json', SCOPES)
        creds = tools.run_flow(flow, store)
    service = build('calendar', 'v3', http=creds.authorize(Http()))
    print('Getting the upcoming 10 events')
    events_result = service.events().list(calendarId='primary', alwaysIncludeEmail=True,
                                          timeMin='2017-01-01T00:00:00+09:00',timeMax='2019-01-05T23:59:59+09:00',
                                        maxResults=10, singleEvents=True,
                                        orderBy='startTime').execute()
    events = events_result.get('items', [])
    if not events:
        print('No upcoming events found.')
    for event in events:
        start = event['start'].get('dateTime', event['start'].get('date'))
        print(start, event['summary'])

if __name__ == '__main__':
    main()

Когда я впервые использовал пример кода этого API, эта информация появляется в консоли Pycharm.

Your browser has been opened to visit:

    https://accounts.google.com/o/oauth2/auth?client_id=1132573726-nu1pktj3jt03qjigful1cq32p97eu.apps.googleusercontent.com&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2F&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcalendar&access_type=offline&response_type=code

If your browser is on a different machine then exit and re-run this
application with the command-line parameter

  --noauth_local_webserver

Затем в моем браузере появляется такая страница,enter image description here

Затем я нажал на свой аккаунт.

На этой странице я нажал Allow.

enter image description here

Затем браузер отображает сообщение.

enter image description here

Затем появляется консоль pycharm:

Authentication successful.
Getting the upcoming 10 events
2018-01-15T08:30:00+09:00 20180115
2019-01-01T10:00:00+09:00 hello
2019-01-02T11:00:00+09:00 20190102_test1
2019-01-03T11:30:00+09:00 20190103_test1
2019-01-04T11:00:00+09:00 20190104_test1

Итак, код работает успешно. Я вижу файл token.json в папке с кодом.

Но мой вопрос: я не могу использовать браузер в Linux (centos), так как я могуразрешить моей учетной записи работать как Windows в первый раз?

Ответы [ 2 ]

0 голосов
/ 31 января 2019

Вам необходимо пройти проверку подлинности в веб-браузере.Чтобы завершить проверку подлинности с другого компьютера / браузера, вы можете выполнить оставшуюся часть проверки подлинности, используя поток OOB (внеполосный).Библиотека oauth, которую вы используете, намекнула, что вы можете использовать этот поток OOB, передав --noauth_local_webserver программе, в которой вы работаете (альтернативно, вы можете как-нибудь добавить флаг в sys.argv), откройте предоставленный URL набраузер, а затем вам придется скопировать обратно код подтверждения вручную.

Обратите внимание, что oauth2client.tools не предназначен для программного интерфейса.Он предназначен для интерактивного CLI-приложения и в качестве примера того, как интегрировать библиотеку с вашим собственным приложением.

0 голосов
/ 31 января 2019

Ouaht2 и согласие пользователя

Если вы хотите получить доступ к личным данным пользователей, вам всегда придется проверять их подлинность как минимум один раз.Единственный способ сделать это с помощью окна веб-браузера.

Первое, что происходит, - это то, что пользователь должен войти в свою учетную запись google через браузер, после того как он войдет в систему, он получит экран согласия, предлагающий предоставить вашему приложению доступ к своим данным.

Таким образом, пользователь дает согласие на доступ вашего приложения к своим данным.

Разработка для пользователей Linux.

Мне интересно, почему вы думаетечто пользователи Linux будут запускать ваше приложение.Я не видел много людей, разрабатывающих приложения для работы под Linux.WTG you.

Пользователям под управлением Linux придется открыть их, чтобы открыть веб-браузер, это можно сделать через рабочий стол Windows.Если они запускают командную строку, им придется скопировать ссылку и открыть ее в браузере.Я не думаю, что веб-браузер командной строки будет работать здесь, его придется делать через рабочий стол Linux.

Сервисная учетная запись

Теперь, когда вам кажется, что беспокоитьсяо пользователях Linux Мне интересно, если вы действительно не беспокоитесь о пользователях вашего приложения.

Вы пытаетесь запустить это приложение, скажем, в cron на linux-сервере?Предполагая также, что вы пытаетесь получить доступ только к одной учетной записи, которую вы лично контролируете.Тогда вы можете использовать то, что называется служебной учетной записью.Сервисные учетные записи предназначены для межсерверного взаимодействия, когда на момент входа в систему пользователь не присутствует для подтверждения согласия.Для работы сервисной учетной записи они должны быть предварительно одобрены.Создав учетную запись службы в консоли разработчика Google, вы просто берете адрес электронной почты учетной записи службы и делитесь календарем, к которому хотите иметь доступ, через веб-сайт календаря Google.После того, как календарь открыт для доступа к учетной записи службы, он получит доступ к этому календарю, и вам не придется беспокоиться об аутентификации в веб-браузере.

...