我有一个 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
?