HttpTransport我正在运行多个并发 API 调用,我想知道Google Api 客户端是否存在非阻塞实现。有人知道吗?
java nio nonblocking google-api-java-client google-http-client
我不明白为什么我无法使用 AppEngineDataStoreFactory 保存 AppIdentityCredential
\n\nAppEngineDataStoreFactory 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;\nRun Code Online (Sandbox Code Playgroud)\n\nAppIdentityCredential 不可序列化,StoredCredential 只接受 Credential 对象...\n逻辑是什么???
\n\nC\xc3\xa9dric
\njava google-app-engine google-api-java-client google-cloud-datastore google-cloud-platform
我正在尝试访问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
为什么不起作用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 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 Account和JSON Key。
这会下载一个_________.json文件。
在 a 中 …
java google-api-java-client google-compute-engine google-oauth
我正在用 Java 编写一个后端进程,它将模拟用户并在他们的 Google Drive 上添加/删除文档。
服务器帐户似乎已正确进行身份验证,但是当我尝试模拟用户时,我得到一个401 Unauthorized error. 请参阅下面的详细信息。
配置
我已经配置了服务器帐户如下:
我已使用管理 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
我按照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
我必须传递带有时区信息的消息 (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 客户端或 GCloud API 本身从其集群之一中获取当前的 GKE 项目 ID。
ClusterManagerClient用适当的初始化ClusterManagerSettings-> 是否可以使用此客户端获取此特定项目 ID?
(我希望每个 GKE 集群中都有一个全局上下文,我们可以在其中了解我们正在运行的当前项目)。
谢谢
google-api-java-client google-cloud-platform kubernetes google-kubernetes-engine google-container-builder
我正在研究 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 ×9
google-api ×4
google-oauth ×2
gmail ×1
gmail-api ×1
java-8 ×1
kubernetes ×1
nio ×1
nonblocking ×1
timezone ×1