Удаленный вызов Python QuickStart Mirror API

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

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

Любые идеи о том, с чего мне начать?

Изменить: не уверен, почему за это проголосовали. По сути, я хотел вставить карты в свою временную шкалу из Objective C. Покопавшись некоторое время, я смог понять это, используя библиотеки Objective C, которые Google предоставляет для взаимодействия со своими сервисами.


person Beebunny    schedule 13.01.2014    source источник


Ответы (1)


Ваш код, который вставляет элементы временной шкалы, будет в основном таким же, но вам нужно будет использовать другой поток для получения токена доступа. Возможно, вы захотите использовать процесс OAuth 2.0 для установленных приложений, который также описан в < href="https://developers.google.com/api-client-library/python/guide/aaa_oauth#flows" rel="nofollow">документы по клиентской библиотеке Python API.

Ваша стеклянная посуда может работать примерно так:

  1. Создать новый поток

    from oauth2client.client import OAuth2WebServerFlow 
    ... 
    flow = OAuth2WebServerFlow(client_id='your_client_id',
                       client_secret='your_client_secret',
                       scope='https://www.googleapis.com/auth/glass.timeline',
                       redirect_uri='urn:ietf:wg:oauth:2.0:oob')
    
  2. Создайте URL-адрес аутентификации и попросите пользователя получить к нему доступ в веб-браузере.

    auth_uri = flow.step1_get_authorize_url()
    print 'Please navigate here ' + auth_uri
    

    Это даст код. Попросите пользователя вставить этот код вам.

  3. Обменять код на учетные данные

    credentials = flow.step2_exchange(code) 
    
  4. Сохраните эти учетные данные для последующего использования в файле, базе данных или другом постоянном хранилище. Вот как вы будете вставлять элементы в временную шкалу вашего пользователя.

  5. Используя учетные данные, вставьте элемент на их временную шкалу.

    http = httplib2.Http()
    http = credentials.authorize(http)
    
    mirror_service = build("mirror", "v1", http=http)
    body = {
        'notification': {'level': 'DEFAULT'},
        'text':'Hello world!'
    }
    
    timeline_item = mirror_service.timeline().insert(body=body).execute()
    
person mimming    schedule 13.01.2014
comment
Дженни – Я думаю, это помогает, но на самом деле я пытаюсь сделать что-то другое. На самом деле, я пытаюсь вызвать API-интерфейс Python Mirror из приложения Objective C. Я вижу в main_handler.py, что у метода post есть аннотация (@util.auth_required). - person Beebunny; 14.01.2014
comment
По сути, я пытаюсь сделать почтовый запрос к моему приложению, например, myapp.appspot.com, и передать ему правильное значение для операции с переменной POST. - person Beebunny; 14.01.2014
comment
@util.auth_required — декоратор oauth. Это функция клиентской библиотеки Google Python API, которая автоматизирует некоторые части потока OAuth. Но мне любопытно, вы на самом деле выполняете Python в своем приложении на Objective C или просто пытаетесь узнать, как реализовать его в Objective C? - person mimming; 14.01.2014
comment
Дженни, если я удалю @util.auth_required из сообщения или метод get и разверну, я получаю ошибку 500 Internal Server, когда захожу в свое приложение. - person Beebunny; 14.01.2014
comment
Дженни, Python и Objective C полностью разделены в моем потоке приложений. Я просто хочу сделать запрос POST из Objective C в мой стартовый проект Python (размещенный в Google App Engine), чтобы добавить карту на временную шкалу. - person Beebunny; 14.01.2014
comment
А теперь я понимаю. Звучит как довольно сложное приложение. Вы не сможете использовать декоратор, но вам все равно нужны учетные данные для выполнения запроса. Когда вы делаете POST из своего приложения Objective C, вам нужно будет включить какой-то идентификатор личности пользователя. Затем на своем веб-сервере используйте этот идентификатор, чтобы вызвать учетные данные для этого пользователя, которые вы ранее сохранили из потока OAuth. Наконец, используйте эти учетные данные для создания объекта mirror_service, как описано в моем ответе. - person mimming; 14.01.2014