Python GAE:Can';t使用Google服务器端API';s(白名单问题)

Python GAE:Can';t使用Google服务器端API';s(白名单问题),python,google-app-engine,google-api,google-cloud-platform,Python,Google App Engine,Google Api,Google Cloud Platform,要使用GoogleAPI,在从GoogleDevelopers控制台激活它们之后,需要生成凭据。在我的例子中,我有一个后端,应该使用API服务器端。为此,有一个选项可以生成Google页面所称的“服务器应用程序密钥”。到目前为止还不错 问题是,为了生成密钥,必须提到将被列入白名单的服务器的IP地址。但是GAE没有我可以在那里使用的静态IP地址 有一个通过执行以下操作手动获取IP的选项: dig -t TXT _netblocks.google.com @ns1.google.com 然而,不

要使用GoogleAPI,在从GoogleDevelopers控制台激活它们之后,需要生成凭据。在我的例子中,我有一个后端,应该使用API服务器端。为此,有一个选项可以生成Google页面所称的“服务器应用程序密钥”。到目前为止还不错

问题是,为了生成密钥,必须提到将被列入白名单的服务器的IP地址。但是GAE没有我可以在那里使用的静态IP地址

有一个通过执行以下操作手动获取IP的选项:

dig -t TXT _netblocks.google.com @ns1.google.com 
然而,不能保证列表是静态的(而且,我们知道它会不时地改变),也没有编程方法可以自动使用从Google开发者控制台中挖掘得到的添加IP

这让我有两个选择:

  • 对于这个项目,忘记GAE吧,讽刺的是,GAE不能用作GoogleAPI的后端(最好使用Amazon或其他解决方案)。或
  • 在dig命令的输出上编写一个类似看门狗的程序,如果有更改,它会通知我,然后我会手动更新白名单(我不会这样做,太危险了),或者允许所有IP使用Google API,只要它拥有我的API密钥。虽然不是最安全的解决方案,但它确实有效

  • 还有其他解决办法吗?难道GAE不支持使用Google API的服务器端吗?

    您可以使用App Identity从AppEngine访问Google的API。请参阅:。如果您使用云控制台安装应用程序,它应该已经向您的项目添加了具有权限的应用程序的标识,但您可以随时查看。从项目云控制台的“权限”选项卡,确保将您的服务帐户添加到“服务帐户”下(以
    您的应用程序的形式)_id@appspot.gserviceaccount.com


    此外,如果您使用python可用的JSON API库,那么可以使用捆绑的oauth2库来完成所有这些工作,使用AppAssertionCredentials来授权希望使用的API。请参阅:

    是的,您应该使用应用程序标识。忘记获取IP或放弃GAE:-)下面是一个如何在GAE应用程序中使用大查询的示例:

    static {
        // initializes Big Query
        JsonFactory jsonFactory = new JacksonFactory();
        HttpTransport httpTransport = new UrlFetchTransport();
        AppIdentityCredential credential = new AppIdentityCredential(Arrays.asList(Constants.BIGQUERY_SCOPE));
        bigquery = new Bigquery.Builder(httpTransport, jsonFactory, credential)
                .setApplicationName(Constants.APPLICATION_NAME).setHttpRequestInitializer(credential)
                .setBigqueryRequestInitializer(new BigqueryRequestInitializer(Constants.API_KEY)).build();
    }
    

    谢谢,但这似乎不适用于所有的谷歌API。例如,我使用的是google自定义搜索API,而OAuth2没有这个作用域(据我所知,它只支持用于身份验证的API密钥)。因此,应用程序标识API毕竟不能用于识别我的GAE应用程序。看起来谷歌不支持使用谷歌自己的云基础设施与谷歌API的。。。非常荒谬的IMHO。大多数API将使用OAUTH2身份验证和AppEngine。然而,您最初的问题并没有说明您具体使用的是CS API,因此我相应地回答了您的问题。这可能是一个你运气不好的API。您可以尝试改用计算引擎。如果你有谷歌的支持,你可以开一张罚单寻求进一步的建议。谢谢,但这似乎不适用于所有的谷歌API。例如,我使用的是google自定义搜索API,而OAuth2没有这个作用域(据我所知,它只支持用于身份验证的API密钥)。因此,应用程序标识API毕竟不能用于识别我的GAE应用程序。看起来谷歌不支持使用谷歌自己的云基础设施与谷歌API的。。。非常荒谬的伊姆霍