将google api客户端库导入python / flask

时间:2018-03-18 18:51:26

标签: python google-api google-oauth

我正在尝试使用python根据他们的文档here验证Google id令牌的oauth。执行它的代码似乎是可管理的,但我不太熟悉在flask框架(或任何python框架)中设置库。

我只想要这些线条起作用:

from google.oauth2 import id_token
from google.auth.transport import requests

我用pip安装了它们:

pip install --upgrade google-api-python-client

这本身不起作用。但我在他们的文档中看到了谷歌的这些笔记:

  

因为App中没有安装Python客户端库   引擎Python运行时环境,它们必须是vendored into your   应用程序就像第三方库一样。

我试图在失去的地方做这件事。

我已在其设施中添加了文件appengine_config.py。虽然它说它需要与app.yaml文件位于同一目录中,但我没有这个目录,也没有看到有关如何设置它的任何信息。

简而言之,我是否正确地安装这些google python库?如果是这样,我错过了什么?如果没有,我应该走哪条路?

编辑:原来我没有使用APP引擎,但谷歌的文档让我觉得这些都是我需要采取的步骤,这些步骤让我失去了正确的(并且更加简化了)路径。

1 个答案:

答案 0 :(得分:1)

问题似乎是因为您未使用virtualenv。只需按照以下说明操作即可。

  1. 使用以下链接中的说明安装virtualenv,安装完成后使用source /path/to/your/virtualenv命令激活它:
  2. https://cloud.google.com/python/setup#installing_and_using_virtualenv

    1. 一旦您进入vritualenv,请按照以下链接中的说明安装所需的Google oauth库:
    2. https://developers.google.com/api-client-library/python/auth/web-app

      1. 现在,您可以按照以下链接获取API参考或您提供的link
      2. https://google-auth.readthedocs.io/en/latest/#

        使用ipython在本地测试了上述步骤并且它正在运行。以下是相同的输出。

        In [1]: from google.oauth2 import id_token
        
        In [2]: dir(id_token)
        Out[2]: 
        ['_GOOGLE_APIS_CERTS_URL',
         '_GOOGLE_OAUTH2_CERTS_URL',
         '__builtins__',
         '__doc__',
         '__file__',
         '__name__',
         '__package__',
         '_fetch_certs',
         'exceptions',
         'http_client',
         'json',
         'jwt',
         'verify_firebase_token',
         'verify_oauth2_token',
         'verify_token']
        
        In [3]: from google.auth.transport import requests
        
        In [4]: dir(requests)
        Out[4]: 
        ['AuthorizedSession',
         'Request',
         '_LOGGER',
         '_Response',
         '__builtins__',
         '__doc__',
         '__file__',
         '__name__',
         '__package__',
         'absolute_import',
         'exceptions',
         'functools',
         'logging',
         'requests',
         'six',
         'transport']
        
        In [5]: 
        

        `