2

我有一个 Python 程序,它与通过 OAuth 使用 Google 提供的示例代码进行身份验证的 Google API 交互:

# Perform OAuth 2.0 authorization.
flow = oauth2client.client.flow_from_clientsecrets(
  parameters[self.PARAM_SECRETS], scope=self.GCE_SCOPE)
storage = oauth2client.file.Storage(LocalState.get_oauth2_storage_location(
  parameters[self.PARAM_KEYNAME]))
credentials = storage.get()

if credentials is None or credentials.invalid:
  credentials = oauth2client.tools.run(flow, storage)

# Build the service
return apiclient.discovery.build('compute', self.API_VERSION), credentials

但是,每当我运行它时,它都会强制打开浏览器并要求用户单击按钮进行身份验证。如果程序在没有本地 Web 服务器的机器上运行,这会导致问题。我看过这个问题,似乎表明问题可以通过使用来解决--noauth_local_webserver,但它说我必须重写我的程序以gflags用于参数处理,并且我现有的代码已经使用了argparse

有没有一种方法可以在不强制打开浏览器的情况下对用户进行身份验证,而不必重写我的整个应用程序来使用gflags

4

1 回答 1

2

好吧,今天它不会对您有所帮助,但是在 1.2 版本中删除了对客户端库中 gflags 的依赖 。更新后的run() 命令现在使用 argparse,并且通常不会依赖于核心库中的任何特定标志库。不幸的是,这并不能为您解决今天的问题。我希望在本月底之前发布 1.2 版本,但不能保证。

于 2013-06-01T16:07:34.463 回答