在没有本地网络服务器的Python中使用Google客户端库

时间:2013-05-31 15:15:27

标签: python oauth-2.0 google-api-python-client

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

# 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服务器的计算机上运行,​​则会导致问题。我见过this question,这似乎表明问题可以通过使用--noauth_local_webserver来解决,但它说我必须重写我的程序以使用gflags进行参数处理,并且我现有的代码已使用argparse

有没有办法在不强制浏览器打开的情况下对用户进行身份验证,而无需重写整个应用程序以使用gflags

1 个答案:

答案 0 :(得分:2)

好吧,它今天不会帮助你,但是客户端库中对gflags的依赖性是 1.2版本中的being removed。更新的run() command now uses argparse,通常不会依赖核心库中的任何特定标志库。不幸的是,这并不能解决你今天的问题。我希望在本月底之前将1.2版本发布,但不能保证。