为什么在这个例子中使用 OAuth2WebServerFlow?

Why is OAuth2WebServerFlow used in this example?

在描述如何构建命令行客户端以访问在 App Engine 端点发布的 API 的 docs 中,Oauth2WebServerFlow 用于获取 flow 对象用于获取凭据。我无法弄清楚如何将其用于命令行应用程序。

在花了几个小时试图找出为什么即使在使用已发布的示例设法获取凭据后我仍然收到 401 错误之后,我找到了包含以下工作代码的 a nice page

flow = oauth2client.client.flow_from_clientsecrets(
        'client_secret.json',  # downloaded file
        'https://www.googleapis.com/auth/userinfo.email'  # scope
        redirect_uri='urn:ietf:wg:oauth:2.0:oob')

Google发布的例子真的不正确吗?

他们展示了不同的授权方法。

在 Google 示例中,您必须获取 client_idclient_secret 字符串并将它们分别分配给变量 CLIENT_IDCLIENT_SECRET .在示例中,它们只是空字符串。

获取授权 URL、获取授权和存储凭据的实际过程全部在 tools.run_flow

内完成

在博客中,他们在自己的代码中完成了所有这些工作。他们还要求用户复制并粘贴授权代码,这在 Google 示例中是自动完成的。

您是否收到任何错误消息或失败?

编辑:此外,flow_from_clientsecrets returns 一个 OAuth2WebServerFlow 对象,但有额外的错误检查,Google 示例中没有。