如何使用 google.oauth2 python 库?

Posted

技术标签:

【中文标题】如何使用 google.oauth2 python 库?【英文标题】:How do I use google.oauth2 python library? 【发布时间】:2018-10-29 07:34:58 【问题描述】:

我正在尝试对 google 机器学习项目的安全预测端点进行简单的休息调用,但它找不到 google.oauth2 模块。这是我的代码:

import urllib2
from google.oauth2 import service_account

# Constants
ENDPOINT_URL = 'ml.googleapis.com/v1/projects/project/models/model:predict?access_token='
SCOPES = ['https://www.googleapis.com/auth/sqlservice.admin']
SERVICE_ACCOUNT_FILE = 'service.json'

credentials = service_account.Credentials.from_service_account_file(SERVICE_ACCOUNT_FILE, scopes=SCOPES)
access_token=credentials.get_access_token()

opener = urllib2.build_opener(urllib2.HTTPHandler)
request = urllib2.Request(ENDPOINT_URL)
request.get_method = lambda: 'POST'
result = opener.open(request).read()
print(str(result))

当我运行它时,我得到了这个错误:

Traceback (most recent call last):
  File "wakeUpMLServer.py", line 30, in <module>
    from google.oauth2 import service_account
ImportError: No module named oauth2

我使用 pip 安装了 google-api-python-client 库(来自此处的说明:https://developers.google.com/api-client-library/python/apis/oauth2/v1)。安装说成功了。 Python版本:2.7.6 点子版本:1.5.4

如果发生冲突,您应该知道我也在同一台服务器上进行 protobuf 文件处理,所以我也安装了 protobufs 库。当我执行 pip list 时,它会显示两个库:

google-api-python-client (1.6.7)
protobuf (3.1.0.post1)

有什么特殊的方法可以安装模块吗?如何验证模块是否已安装?有没有更简单的方法来对只使用 Rest API 而没有 python 的安全 ml 端点进行简单的 rest 调用?

【问题讨论】:

【参考方案1】:

The google-oauth2 module definitely exists,所以它可能从未安装过。

您是否安装了google-auth 软件包?尝试执行

pip install --upgrade google-auth

然后再次运行您的代码。

【讨论】:

成功了!我想知道如果这是必需的步骤,为什么谷歌的说明中没有?【参考方案2】:

安装 Google API python 包,

pip install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib

然后您可以使用 oauth2 凭据(确保 service_account.json 与您的脚本位于同一目录中)

import json
from googleapiclient.discovery import build
from google.oauth2.service_account import Credentials

service_account_info = json.load(open('service_account.json'))
credentials = Credentials.from_service_account_info(
            self.service_account_info, scopes=SCOPES)

drive_service = build('drive', 'v3', credentials=credentials)

如需更完整的教程,请访问https://developers.google.com/docs/api/quickstart/python

【讨论】:

以上是关于如何使用 google.oauth2 python 库?的主要内容,如果未能解决你的问题,请参考以下文章

如何识别 Google OAuth2 用户?

在 C# 中使用 google OAuth2 后如何获取电子邮件?

如何删除 Google OAuth2 gapi 事件监听器?

如何修复google OAuth2错误?

将使用 Google OAuth2.0 的登录电子邮件限制为特定域名

如何使用 System.IdentityModel.Tokens.Jwt 生成具有 Google OAuth2 兼容算法 RSA SHA-256 的 JWT?