当前位置: 首页 > 知识库问答 >
问题:

应用程序引擎凭据问题

朱祺
2023-03-14

我有一个导入jar的app引擎app。在那个罐子里,我用的是GoogleClientSecrets。load()以加载client\u机密。用于使用BigQuery进行身份验证的json文件。显然,当我在localhost上部署应用程序时,应用程序引擎不喜欢我从磁盘上的某个位置读取文件。我假设,如果我把凭据放在WEBINF文件夹中,它会工作,但还没有测试,但这样任何人都可以轻松访问该文件。哪里是放置凭据的最佳位置,如何从应用程序引擎应用程序访问凭据?

谢谢你的帮助!

这些建议有助于解决读取文件时的问题。写入文件怎么样?我正在使用存储凭据文件的FileCrepedia alStore。

我认为这一行导致了一个问题:FileCredentialStore variantStoreCredentialManager=新FileCredentialStore(expectedClientFile,jsonFactory);错误是java。安全AccessControlException:拒绝访问(“java.io.FilePermission”文件路径“write”)

    public Bigquery createAuthorizedClient() throws IOException {
    Credential authorization = new GoogleCredential();
    if ( clientID == null ) {
        authorization = createWebAuthenticatedClientCredential();
    } else {
        String expectedFileLocation = CREDENTIAL_FILE_PATH;
        File expectedClientFile = new File(expectedFileLocation);
        if ( ! expectedClientFile.exists() ) {
            // this is a known issue, the credential store will blow up if the file doesn't exist. So create it with an
            // empty json ( {  } )
            createClientFile(expectedClientFile);
        }
        FileCredentialStore variantStoreCredentialManager = new FileCredentialStore(expectedClientFile,jsonFactory);
        GoogleCredential.Builder credentialBuilder = new GoogleCredential.Builder();
        credentialBuilder.setJsonFactory(jsonFactory);
        credentialBuilder.setClientSecrets(clientSecrets);
        credentialBuilder.setTransport(transport);
        authorization = credentialBuilder.build();
        boolean loadedSuccessfully = variantStoreCredentialManager.load(clientID,authorization);
        if ( ! loadedSuccessfully  ) {
            authorization = createWebAuthenticatedClientCredential();
            variantStoreCredentialManager.store(clientID, authorization);
        }
    }

    return new Bigquery(transport, jsonFactory, authorization);
}

共有1个答案

郤仰岳
2023-03-14

否,/WEB-INF文件夹的内容是应用程序代码私有的,无法通过HTTP访问(=servlet容器不支持尝试访问WEB-INF文件夹中的数据的请求)。

使用此代码段读取WEB-INF文件夹中文件的内容:

InputStream is = getServletContext().getResourceAsStream("/WEB-INF/"+filename);

然后使用读取InputStreams的方法之一读取流。

 类似资料:
  • 我正在将一个非常基本的web应用程序部署到Google应用程序引擎。我使用的是Springboot,我可以在本地很好地运行应用程序,但当我部署到Google时,应用程序引擎不会启动实例。我在启动时配置了一个云SQL数据源。 我有云sql配置属性配置src/main/Resources/application.properties.App Engine似乎找不到这些属性,所以它无法正确设置Cloud

  • 我创建了一个具有并发gcloud应用程序的Dialogflow代理。但是,当我尝试将它集成到Node.js后端时,它似乎访问了错误的应用程序默认凭据。 我可以确认它正在验证身份验证是否成功,因为当我运行以下代码时,它的控制台记录了正确的项目ID(diagnosistest-56e81): null 当我执行此操作时,会得到不同的错误消息:

  • 我们正在使用SpringSecurityACL基础设施与AppEngine数据存储相结合。我们不使用低级数据存储API,而是使用Objectify框架访问数据存储。我们需要将Spring SecurityACL模型(适用于RDBMS)转换为更适用于无模式面向对象数据存储的模型。到目前为止,我们已经完成了下面描述的两个实体。 国际计算语言学协会 id:Long 阿兰特里 sid:字符串 负责人:布尔

  • 我有一个Gradle App Engine项目,我正在使用Google ApppEngine开发服务器进行调试。

  • 生产版本可用,但我无法在Google Play上更新我的应用程序。 根据审查后的谷歌播放电子邮件: 问题:审核应用需要登录凭据< br >为了让我们审核你的应用是否符合开发者计划政策,我们需要你为你的应用提供有效的登录凭据。< br >如果用户需要凭据来访问您的应用程序,请通过Play Console提供所有适当的凭据。< br >如果您以前提供过凭据,请确保它们没有过期。< br >如果您的应用

  • 嗨,我正在开发IOS应用程序。我还使用JSON web服务。我还使用Google App Engine for python。我对python和google应用程序引擎真的是个新手。我想不出这个问题; 我在json中发送bas64图像和其他信息。我想保存其他信息到数据库(GQL),并保存到图像谷歌文件夹(Blob商店),这张照片网址保存在谷歌数据库的其他信息。 你能帮帮我吗 更新