【问题标题】:Call Python QuickStart Mirror API remotely远程调用 Python QuickStart Mirror API
【发布时间】:2014-01-13 23:15:22
【问题描述】:

我使用了 Python Starter 项目,我可以添加时间线卡,然后显示在我的 Glass 上。

我想做的是从我的 Mac 上运行的独立应用程序调用端点,以触发 Python 逻辑将条目插入时间线。

关于我应该从哪里开始的任何想法?

编辑:不知道为什么这被否决了。我基本上想从 Objective C 将卡片插入我的时间线。经过一段时间的研究,我能够使用 Google 提供的用于与他们的服务交互的 Objective C 库来解决这个问题。

【问题讨论】:

    标签: python google-glass google-mirror-api aero-glass


    【解决方案1】:

    插入时间线项目的代码基本相同,但您需要使用不同的流程来获取访问令牌。您可能想使用OAuth 2.0 flow for installed applications,这也是Python API Client Library docs 中的文档。

    您的玻璃器皿可能会像这样工作:

    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. 创建一个 Auth URL 并指示用户在 Web 浏览器中访问它

      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()
      

    【讨论】:

    • Jenny - 我认为这有帮助,但我实际上正在尝试做一些不同的事情。事实上,我正在尝试从 Objective C 应用程序调用我的 Python Mirror API。我可以在 main_handler.py 中看到 post 方法有一个注释(@util.auth_required)。
    • 我实际上想做的是向我的应用(即 myapp.appspot.com)发出一个发布请求,并为 POST 变量“操作”提供正确的值。
    • @util.auth_required 是 oauth 装饰器。它是 Google Python API 客户端库的一项功能,可自动执行 OAuth 流程的某些部分。但我很好奇,您实际上是在您的 Objective C 应用程序中执行 Python,还是只是想学习如何在 Objective C 中实现它?
    • 珍妮,如果我从帖子中删除 @util.auth_required 或获取方法并部署,当我转到我的应用程序时会收到 500 内部服务器错误。
    • 啊,我明白了。这听起来像是一个相当复杂的应用程序。您将无法使用装饰器,但您仍然需要凭据才能发出请求。当您从 Objective C 应用程序进行 POST 时,您需要包含某种关于用户身份的标识符。然后,在您的 Web 服务器上,使用此标识符来调用您之前从 OAuth 流中存储的该用户的凭据。最后,使用这些凭据创建 mirror_service 对象,如我的回答中所述。
    猜你喜欢
    • 2013-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-13
    • 2013-09-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多