我正在使用谷歌应用程序引擎和谷歌数据存储。我正在使用谷歌图书馆
com.google.cloud.datastore.Datastore
我的示例代码是:
Datastore datastore = DatastoreOptions.getDefaultInstance().getService();
Key taskKey = datastore.newKeyFactory().setKind(entityName).newKey(id);
//populate some fields....
datastore.put(task);
我使用Spring靴和码头作为容器。
在本地,它工作正常,数据在谷歌数据存储中更新。
问题是当我部署应用程序到google-app-Engine,我得到下面的异常,当我得到datastore.put方法。
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.
com.google.cloud.datastore.spi.v1.HttpDatastoreRpc.translate(HttpDatastoreRpc.java:129)
com.google.cloud.datastore.spi.v1.HttpDatastoreRpc.commit(HttpDatastoreRpc.java:155)
com.google.cloud.datastore.DatastoreImpl$4.call(DatastoreImpl.java:485)
注意:在本地环境和google-app-Engine中,我定义了环境变量GOOGLE_APPLICATION_CREDENTIALS指向json文件,其中包含googleAPI生成的所有必需凭据。
如果您使用的是<代码>
我最近遇到了这个问题,花了很多时间来解决这个问题,更多信息可以在这里找到
如果您仍在使用com.google.云数据存储。DatastoreException:请求缺少必需的身份验证凭据。需要OAuth 2访问令牌、登录cookie或其他有效的身份验证凭据 可以显式设置凭据,如下例所示:
Resource credentialsCyberpower = resourceLoader.getResource("classpath:yourservice-datastore-access.json");
GoogleCredentials credentials = GoogleCredentials.fromStream(credentialsCyberpower.getInputStream())
.createScoped(Lists.newArrayList("https://www.googleapis.com/auth/cloud-platform"));
DatastoreOptions options =
DatastoreOptions.newBuilder().setProjectId("XXXXXX").setCredentials(credentials).build();
Datastore datastore = options.getService();
ObjectifyService.init(new ObjectifyFactory(datastore));
生成yourservice数据存储访问权限。IAM服务帐户中的json。使用Objectify 6.0.5
根据Java中从App Engine连接到数据存储的文档,有几个选项可用,因此您可以使用Objectify(第三方库)、数据存储API或数据存储客户端库。
在使用客户端库时,您必须知道它们使用了应用程序默认凭据,这样,如文档所示,如果环境变量GOOGLE_APPLICATION_CREDENTIALS
,ADC将使用App Engine为在该服务上运行的应用程序提供的默认服务号。因此,在您的情况下,我认为您不应该定义环境变量,以便App Engine使用其默认服务帐户。
我尝试从PHP向Android手机应用发送推送通知 我使用谷歌云消息,但在浏览器中我看到错误: 请求缺少身份验证密钥(FCM令牌)。请参阅FCM文档的“认证”部分,网址为https://firebase.google.com/docs/cloud-messaging/server.错误401 此外,我可以从c#控制台应用程序发送消息推送并在我的手机上接收它(我认为,授权密钥是正确的): 问题:如何
//身体是这样的 //我需要发出的通知
我对社交网络分析和twitter api是新手。我想收集关于特定主题的tweets。所以我写了下面的代码 在我的程序中,我需要在哪里提供凭据 谢谢