标签: google-api-java-client

Google API 客户端的 HttpTransport 的非阻塞实现?

HttpTransport我正在运行多个并发 API 调用,我想知道Google Api 客户端是否存在非阻塞实现。有人知道吗?

java nio nonblocking google-api-java-client google-http-client

5
推荐指数
0
解决办法
405
查看次数

AppIdentityCredential 和 AppEngineDataStoreFactory

我不明白为什么我无法使用 AppEngineDataStoreFactory 保存 AppIdentityCredential

\n\n
AppEngineDataStoreFactory newFactory = new AppEngineDataStoreFactory();\nAppIdentityCredential credential = new AppIdentityCredential.Builder(SCOPES).build()\n\n//line with error\nif (newFactory.getDataStore(StoredCredential.DEFAULT_DATA_STORE_ID)\n                              .set(userId, new StoredCredential(credential))) {\n  return  credential;\n}\nreturn null;\n
Run Code Online (Sandbox Code Playgroud)\n\n

AppIdentityCredential 不可序列化,StoredCredential 只接受 Credential 对象...\n逻辑是什么???

\n\n

C\xc3\xa9dric

\n

java google-app-engine google-api-java-client google-cloud-datastore google-cloud-platform

5
推荐指数
1
解决办法
932
查看次数

Java Google Contacts API 访问服务帐户身份验证

我正在尝试访问Google 联系人 API,但我的尝试在获得授权时已失败。在其他(网络)语言中,我习惯了 APIConsole 和公共 API 密钥(授权)。

GoogleCredential credential = new GoogleCredential().setAccessToken("<<PublicAPIKey>>");
System.out.println(credential.refreshToken());          // false
Run Code Online (Sandbox Code Playgroud)

这样我就无法刷新令牌并且不确定是否使用公钥作为访问令牌......相反,我尝试了服务帐户

private static final String USER_ACCOUNT_EMAIL = "xy@gmail.com";
private static final String SERVICE_ACCOUNT_EMAIL = "xy@developer.gserviceaccount.com";
private static final String SERVICE_ACCOUNT_PKCS12_FILE_PATH = "xy.p12";

public App() {
    Set<String> scopes = new HashSet<String>();
    scopes.add("https://www.google.com/m8/feeds");

    try {
        GoogleCredential credential = new GoogleCredential.Builder()
            .setTransport(new NetHttpTransport())
            .setJsonFactory(new JacksonFactory())
            .setServiceAccountId(SERVICE_ACCOUNT_EMAIL)
            .setServiceAccountScopes(scopes)
            .setServiceAccountUser(USER_ACCOUNT_EMAIL)
            .setServiceAccountPrivateKeyFromP12File(new java.io.File(SERVICE_ACCOUNT_PKCS12_FILE_PATH))
            .build();

        System.out.println(credential.refreshToken());
        //System.out.println(credential.getAccessToken());
    } catch (GeneralSecurityException e) {
        e.printStackTrace();
    } catch (IOException …
Run Code Online (Sandbox Code Playgroud)

java authorization google-api google-api-java-client google-oauth

5
推荐指数
1
解决办法
7817
查看次数

Google API java 客户端 - pageSize

为什么不起作用service.list().setPageSize(pageSize)?它不返回指定的元素列表pageSize。哪里有问题?

编辑

这是不起作用的代码示例:

Appsactivity.Activities.List request = service.activities().list()
        .setDriveFileId(fileId)
        .setGroupingStrategy("driveUi")
        .setSource("drive.google.com")
        .setUserId("me")
        .setPageSize(pageSize);

ListActivitiesResponse response = request.execute();

do {
   response = request.execute();
   List<Activity> items = response.getActivities();        
   System.out.println(items.size());
   request.setPageToken(response.getNextPageToken());

} while (request.getPageToken() != null && request.getPageToken().length() > 0);
Run Code Online (Sandbox Code Playgroud)

如果我有 7 个活动,并且pageSize = 3它不会按预期返回页面 3, 3, 1,而是返回大小为 6, 1 的页面。

这里讨论了同样的问题Issue with Google Charts API while paging table但直接通过设置 pageSize.set("pageSize", pageSize).set("page", "enable")没有帮助。

另一个问题,例如app-engine-java-api-pagesize

java google-api-java-client

5
推荐指数
1
解决办法
558
查看次数

使用 Oauth 连接到 Google Compute Engine

我正在尝试使用 Java 连接到 Google Compute Engine,但出现的异常对我来说意义不大。

我下面的例子说明了以下内容:

/** Authorizes the installed application to access user's protected data. */
private static Credential authorize() throws Exception {
  // load client secrets
  GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JSON_FACTORY,
      new InputStreamReader(CalendarSample.class.getResourceAsStream("/client_secrets.json")));
  // set up authorization code flow
  GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
      httpTransport, JSON_FACTORY, clientSecrets,
      Collections.singleton(CalendarScopes.CALENDAR)).setDataStoreFactory(dataStoreFactory)
      .build();
  // authorize
  return new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver()).authorize("user");
} 
Run Code Online (Sandbox Code Playgroud)

为了获取包含凭据的 json 文件,我访问 cloud.google.com,转到控制台中的我的应用程序,然后单击凭据,然后单击Create new ClientId、选择Service AccountJSON Key

这会下载一个_________.json文件。

在 a 中 …

java google-api-java-client google-compute-engine google-oauth

5
推荐指数
1
解决办法
4000
查看次数

使用服务器帐户模拟用户以访问其 Google 云端硬盘时出现 401 未授权错误

我正在用 Java 编写一个后端进程,它将模拟用户并在他们的 Google Drive 上添加/删除文档。

服务器帐户似乎已正确进行身份验证,但是当我尝试模拟用户时,我得到一个401 Unauthorized error. 请参阅下面的详细信息。

配置

我已经配置了服务器帐户如下:

  • 在 Google APIs 下创建了一个项目并启用了 Google Drive API
  • 创建了一个名为 anothertest@yyyyyyyyy.iam.gserviceaccount.com 的服务帐户,将角色设置为服务帐户参与者并为其提供域范围的委派。它有客户端 ID 110xxxxxxxxx342
  • 我已经下载了 P12 密钥文件

我已使用管理 API 客户端访问屏幕配置域以授权 110xxxxxxxxx342 具有范围:https://www.googleapis.com/auth/drive

Google 支持人员查看了我的配置并对其赞不绝口。

我的代码如下所示:

package com.dcm.sharingdocuments;

import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.Map.Entry;

import com.google.api.client.auth.oauth2.TokenErrorResponse;
import com.google.api.client.auth.oauth2.TokenResponseException;
import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.json.jackson2.JacksonFactory;
import com.google.api.services.drive.Drive;
import com.google.api.services.drive.DriveScopes;
import com.google.api.services.drive.model.FileList;

public class SharingDocumentsTest3 {

    private static final …
Run Code Online (Sandbox Code Playgroud)

java google-api google-api-java-client google-drive-api service-accounts

5
推荐指数
1
解决办法
1193
查看次数

缺少有关 Google Translation API 客户端问题的有效 API 密钥?

我按照https://cloud.google.com/translate/docs/reference/libraries#client-libraries-usage-java开始 java 客户端演示。我已经将set json文件身份验证到环境变量GOOGLE_APPLICATION_CREDENTIALS。但是,当我运行 java 示例代码时,我得到了 translateException。

Exception in thread "main" com.google.cloud.translate.TranslateException: The request is missing a valid API key.
at com.google.cloud.translate.spi.v2.HttpTranslateRpc.translate(HttpTranslateRpc.java:61)
at com.google.cloud.translate.spi.v2.HttpTranslateRpc.translate(HttpTranslateRpc.java:144)
at com.google.cloud.translate.TranslateImpl$4.call(TranslateImpl.java:113)
at com.google.cloud.translate.TranslateImpl$4.call(TranslateImpl.java:110)
Caused by: 
com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 
Forbidden
{
  "code" : 403,
  "errors" : [ {
  "domain" : "global",
  "message" : "The request is missing a valid API key.",
  "reason" : "forbidden"
} ],
  "message" : "The request is missing a valid API key.",
  "status" : "PERMISSION_DENIED" …
Run Code Online (Sandbox Code Playgroud)

java google-api google-translate google-api-java-client google-translator-toolkit

5
推荐指数
2
解决办法
1万
查看次数

在Java中使用国家代码获取地区的时区

我必须传递带有时区信息的消息 (jms),例如 (America/Los_Angeles),但我只有国家/地区名称和代码。如果可能的话,用 Java 代码获取时区信息。我在某处读到这个:

System.out.println(TimeZone.getTimeZone("US"));
Run Code Online (Sandbox Code Playgroud)

但它的输出为

sun.util.calendar.ZoneInfo[id="GMT",offset=0,dstSavings=0,useDaylight=false,transitions=0,lastRule=null]
Run Code Online (Sandbox Code Playgroud)

我期待“美国/洛杉矶”的名单,......

java timezone google-api-java-client java-8 java-calendar

5
推荐指数
2
解决办法
1万
查看次数

如何以编程方式从其中一个集群中获取当前的 GKE 项目 ID?

我想通过 Java 客户端或 GCloud API 本身从其集群之一中获取当前的 GKE 项目 ID。

  • 我在特定 Google Cloud 项目的 GKE 集群中运行 Java 容器
  • ClusterManagerClient用适当的初始化ClusterManagerSettings

-> 是否可以使用此客户端获取此特定项目 ID?

(我希望每个 GKE 集群中都有一个全局上下文,我们可以在其中了解我们正在运行的当前项目)。

谢谢

google-api-java-client google-cloud-platform kubernetes google-kubernetes-engine google-container-builder

5
推荐指数
1
解决办法
1555
查看次数

如何使用 Gmail API 检索电子邮件正文内容?

我正在研究 Gmail API。假设我有兴趣查看哪封邮件包含字符串“foobar2000”。

到目前为止,这是我的代码:

主程序.java

package manhattan.email.bot;

import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
import com.google.api.services.gmail.model.Message;
import com.google.api.services.gmail.model.MessagePart;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.nio.charset.StandardCharsets;
import java.security.GeneralSecurityException;
import java.util.List;
import java.util.Properties;

import manhattan.email.bot.google.GmailCredentials;
import manhattan.email.bot.google.GmailService;
import manhattan.email.bot.google.GmailServiceImpl;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.codec.binary.StringUtils;

public class Main {

    static final String MY_EMAIL = "xxxxx@gmail.com";
    static final String MY_CLIENT_ID = "xxxxxapps.googleusercontent.com";    
    static final String MY_CLIENT_SECRET = "xxxxx";
    static final String MY_ACCESS_TOKEN = "xxxxx";
    static final String MY_REFRESH_TOKEN = "xxxxx";

    public static void main(String[] args) {
        try {
            GmailService gmailService = …
Run Code Online (Sandbox Code Playgroud)

java gmail google-api google-api-java-client gmail-api

5
推荐指数
1
解决办法
3773
查看次数