google-app-engine - 如果使用 Objectify 6.0 和同时
问题描述
在一个 App Engine 应用程序上,部署在标准环境中并激活了 java 8,如果我同时使用 Objectify 6.0 和<url-stream-handler>urlfetch</url-stream-handler>
appengine-web.xml 文件中的标签,我会得到以下异常。
com.google.cloud.datastore.DatastoreException: Request is missing required authentication credential. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.
知道如何绕过它吗?
如果我删除 urlfetch 标签(并激活计费)或者如果我将 Objectify 降级到 v5,事情就会恢复正常。
解决方案
我怀疑您遇到的是 Java 7 和 Java 8 标准环境之间的差异之一。正如Issuing HTTP(S) Requests所指出的(例如HTTP/2) ,避免urlfetch
路径有很多好处。尤其是元数据服务器,它在 App Engine 上运行时对 Google Cloud SDK 进行自动身份验证,使用无法访问(请参阅该页面)。urlfetch
我认为您最好的选择可能是启用计费,如果您对此感到满意的话。从文档页面:
尽管要求为您的应用程序启用计费,但您的应用程序不会比在 Java 7 上运行的同一应用程序产生更多的成本。
如果您仍然想urlfetch
尝试一下,我认为您遇到的错误可以通过手动提供凭据(例如将它们捆绑在您的应用程序中)来修复,但这不会那么安全或性能。
推荐阅读
- firebase - 从firebase firestore检索后如何根据字段对firestore集合文档进行排序
- c# - 在 C# 中添加 ID 列表作为 Firebird 查询的参数
- c++ - 使用 C++ 使用 Win32 api 在特定偏移量处打开文件的正确方法
- java - 将 OCL 表达式解析为 AST(抽象语法树)
- python - igraph python中的标签绘制错误
- multithreading - 为什么我使用 openMP atomic 的并行代码比串行代码花费更长的时间?
- python - 使用 Python 计算单词中的字母
- ios - iOS 设备中 Flutter 应用程序中的 Firebase 推送通知不起作用
- python - django推送通知抛出gcm错误
- sql-server - 架构更改后如何检测损坏的存储过程?