我有 java 代码使用服务帐户连接到谷歌驱动器,这有效:
JsonFactory JSON_FACTORY = new GsonFactory();
GoogleCredential credential = GoogleCredential.fromStream(new FileInputStream("sa.json"))
.createScoped(List.of(DriveScopes.DRIVE))
.createDelegated("foo@bar.com");
return new Drive.Builder(GoogleNetHttpTransport.newTrustedTransport(), JSON_FACTORY, credential)
.setApplicationName("my-drive-app")
.build();
Run Code Online (Sandbox Code Playgroud)
但是,我收到了一条GoogleCredential已弃用的弃用警告,我应该使用GoogleCredentials(注意末尾的额外 s)来代替google-auth-library。
GoogleCredentials我可以这样初始化:
GoogleCredentials credential = GoogleCredentials.fromStream(new FileInputStream("sa.json"))
.createScoped(List.of(DriveScopes.DRIVE))
.createDelegated("foo@bar.com");
Run Code Online (Sandbox Code Playgroud)
但是我似乎无法弄清楚如何使用这个新GoogleCredentials对象初始化驱动服务。传递它来代替凭证对象会产生编译器错误,并且所有官方 googledrive java 文档都引用了现在已弃用的方法。
有人可以告诉我如何使用新的凭据对象初始化谷歌驱动器吗?
我正在使用的版本:
<dependency>
<groupId>com.google.api-client</groupId>
<artifactId>google-api-client</artifactId>
<version>1.32.1</version>
</dependency>
<dependency>
<groupId>com.google.oauth-client</groupId>
<artifactId>google-oauth-client-jetty</artifactId>
<version>1.32.1</version>
</dependency>
<dependency>
<groupId>com.google.apis</groupId>
<artifactId>google-api-services-drive</artifactId>
<version>v3-rev20210919-1.32.1</version>
</dependency>
<dependency>
<groupId>com.google.auth</groupId>
<artifactId>google-auth-library-oauth2-http</artifactId>
<version>1.2.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud) google-api-client我一直在开发一个小项目,该项目连接到用户的 Gmail 收件箱并使用2.0.0 和google-api-services-gmail版本 v1-rev20220404-2.0.0读取邮件
当我尝试构建 Gmail 服务时
service = new Gmail.Builder(HTTP_TRANSPORT, JSON_FACTORY,
authorize).setApplicationName(Main.APPLICATION_NAME).build();
Run Code Online (Sandbox Code Playgroud)
它抛出一个 IllegalStateException 说
“您当前运行的是 2.0.0 版的 google-api-client。您至少需要 1.15 版的 google-api-client 才能运行 1.25.0 版的 Gmail API 库。”
起初我以为可能是我安装的模块不是最新的或者什么的,但这并没有真正意义,所以我尝试调试并进入了 Gmail.java 类。
该代码以非常简单的方式检查版本,如果条件为 false,则抛出异常
static {
Preconditions.checkState(GoogleUtils.MAJOR_VERSION == 1 && GoogleUtils.MINOR_VERSION >= 15,
"You are currently running with version %s of google-api-client. You need at least version 1.15 of google-api-client to run version 1.25.0 of the Gmail API library.",
new Object[]{GoogleUtils.VERSION});
}
Run Code Online (Sandbox Code Playgroud)
我认为这就是问题所在,我的 MAJOR_VERSION 为 2 …
我正在使用 GoogleDrive 的 V2 java 客户端库列出我的 GDrive 中的文件。
我经常从 Google 端收到以下错误。
{
"code" : 500,
"errors" : [ {
"domain" : "global",
"message" : "Internal Error",
"reason" : "internalError"
} ],
"message" : "Internal Error"
}
Run Code Online (Sandbox Code Playgroud)
我们发现,当我们将 maxResults 设置为超过 150 时,特定用户经常会遇到此错误。
有人可以帮忙吗?
我正在开发一个与Youtube API接口的项目.我遇到过两个项目(1)gdata-java-client和(2)google-api-java-client.
项目的范围(和名称)有点令人困惑.似乎google-api-java-client是用于处理Web数据的通用API.相比之下,gdata-java-client处理谷歌特定数据(例如,YouTube API).这是正确的表征吗?
如果是这样,gdata-java-client是否建立在google-api-java-client之上?
我有以下方法:
public <T> execute(HttpRequest request) {
...
// in parseAs i have to pass Class<T> how can I instantiate it from T?
request.execute().parseAs(classT);
}
Run Code Online (Sandbox Code Playgroud)
PS:parseAs是来自谷歌http客户端库的方法.
我正在为Google Glass开发一个Glassware.我正在尝试导入这些文件:
import com.google.api.client.json.jackson.JacksonFactory;
import com.google.api.services.oauth2.Oauth2;
import com.google.api.services.oauth2.model.Userinfo;
Run Code Online (Sandbox Code Playgroud)
但是我收到了错误.他们在下面:
The import com.google.api.client.json.jackson cannot be resolved
The import com.google.api.services.oauth2 cannot be resolved
The import com.google.api.services.oauth2 cannot be resolved
Run Code Online (Sandbox Code Playgroud)
我不知道为什么我会收到这些错误.我正在建立快速入门java项目.我的Maven依赖关系如下:
C:\Users\Family3\.m2\repository\com\google\apis\google-api-services-mirror\v1-rev20-1.16.0-rc\google-api-services-mirror-v1-rev20-1.16.0-rc.jar
C:\Users\Family3\.m2\repository\com\google\api-client\google-api-client\1.16.0-rc\google-api-client-1.16.0-rc.jar
C:\Users\Family3\.m2\repository\com\google\oauth-client\google-oauth-client\1.16.0-rc\google-oauth-client-1.16.0-rc.jar
C:\Users\Family3\.m2\repository\com\google\http-client\google-http-client-jackson2\1.16.0-rc\google-http-client-jackson2-1.16.0-rc.jar
C:\Users\Family3\.m2\repository\com\google\http-client\google-http-client\1.16.0-rc\google-http-client-1.16.0-rc.jar
C:\Users\Family3\.m2\repository\com\google\code\findbugs\jsr305\1.3.9\jsr305-1.3.9.jar
C:\Users\Family3\.m2\repository\org\apache\httpcomponents\httpclient\4.0.1\httpclient-4.0.1.jar
C:\Users\Family3\.m2\repository\org\apache\httpcomponents\httpcore\4.0.1\httpcore-4.0.1.jar
C:\Users\Family3\.m2\repository\xpp3\xpp3\1.1.4c\xpp3-1.1.4c.jar
C:\Users\Family3\.m2\repository\com\fasterxml\jackson\core\jackson-core\2.1.3\jackson-core-2.1.3.jar
C:\Users\Family3\.m2\repository\org\mortbay\jetty\jetty\6.1.14\jetty-6.1.14.jar
C:\Users\Family3\.m2\repository\org\mortbay\jetty\servlet-api-2.5\6.1.14\servlet-api-2.5-6.1.14.jar
C:\Users\Family3\.m2\repository\org\mortbay\jetty\jetty-util\6.1.14\jetty-util-6.1.14.jar
C:\Users\Family3\.m2\repository\org\mortbay\jetty\jetty-plus\6.1.14\jetty-plus-6.1.14.jar
C:\Users\Family3\.m2\repository\geronimo-spec\geronimo-spec-jta\1.0.1B-rc4\geronimo-spec-jta-1.0.1B-rc4.jar
C:\Users\Family3\.m2\repository\org\mortbay\jetty\jsp-2.1\6.1.14\jsp-2.1-6.1.14.jar
C:\Users\Family3\.m2\repository\org\eclipse\jdt\core\3.1.1\core-3.1.1.jar
C:\Users\Family3\.m2\repository\ant\ant\1.6.5\ant-1.6.5.jar
C:\Users\Family3\.m2\repository\org\mortbay\jetty\jsp-api-2.1\6.1.14\jsp-api-2.1-6.1.14.jar
C:\Users\Family3\.m2\repository\org\apache\commons\commons-lang3\3.1\commons-lang3-3.1.jar
C:\Users\Family3\.m2\repository\org\codehaus\jackson\jackson-core-asl\1.9.11\jackson-core-asl-1.9.11.jar
C:\Users\Family3\.m2\repository\org\codehaus\jackson\jackson-mapper-asl\1.9.11\jackson-mapper-asl-1.9.11.jar
C:\Users\Family3\.m2\repository\javax\servlet\servlet-api\2.5\servlet-api-2.5.jar
C:\Users\Family3\.m2\repository\commons-logging\commons-logging\1.1.2\commons-logging-1.1.2.jar
C:\Users\Family3\.m2\repository\commons-codec\commons-codec\1.7\commons-codec-1.7.jar
C:\Users\Family3\.m2\repository\com\google\guava\guava\14.0.1\guava-14.0.1.jar
Run Code Online (Sandbox Code Playgroud)
为什么我会收到这些错误?我没有导入.jar吗?我找不到任何应该包含的.jar,但可能有一个.jar.谢谢您的帮助.
java maven google-api-java-client google-glass google-mirror-api
我有一个Google接受的有效OAuth2令牌,但GoogleIdTokenVerifier甚至无法解析它.
令牌是ya29.1.AADtN_XcjzHgauKetBvrbgHImGFg1pjiHRQAKHyTglBDjEZsTPUMQJ5p-xAKtk955_4r6MdnTe3HZ08(不用担心,它已经过期).
它是在Android上使用获得的
accountManager.blockingGetAuthToken(account, "oauth2:https://www.googleapis.com/auth/userinfo.email", true);
Run Code Online (Sandbox Code Playgroud)
当我打电话给https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=...
我时,我得到了理智的结果
{
"issued_to": "34951113407.apps.googleusercontent.com",
"audience": "34951113407.apps.googleusercontent.com",
"scope": "https://www.googleapis.com/auth/userinfo.email",
"expires_in": 3175,
"email": "me@gmail.com",
"verified_email": true,
"access_type": "offline"
}
Run Code Online (Sandbox Code Playgroud)
所以它必须是有效的令牌.但是当我打电话时
new GoogleIdTokenVerifier(new UrlFetchTransport(), JacksonFactory.getDefaultInstance())
.verify(authToken)
Run Code Online (Sandbox Code Playgroud)
它给了我
com.fasterxml.jackson.core.JsonParseException: Unexpected character ('É' (code 201)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')
at [Source: java.io.ByteArrayInputStream@69886979; line: 1, column: 2]
at com.fasterxml.jackson.core.JsonParser._constructError(JsonParser.java:1378)
at com.fasterxml.jackson.core.base.ParserMinimalBase._reportError(ParserMinimalBase.java:599)
at com.fasterxml.jackson.core.base.ParserMinimalBase._reportUnexpectedChar(ParserMinimalBase.java:520)
at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._handleUnexpectedValue(UTF8StreamJsonParser.java:2275)
at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._nextTokenNotInObject(UTF8StreamJsonParser.java:788)
at com.fasterxml.jackson.core.json.UTF8StreamJsonParser.nextToken(UTF8StreamJsonParser.java:674)
at com.google.api.client.json.jackson2.JacksonParser.nextToken(JacksonParser.java:55)
at com.google.api.client.json.JsonParser.startParsing(JsonParser.java:213)
at com.google.api.client.json.JsonParser.parse(JsonParser.java:372)
at com.google.api.client.json.JsonParser.parse(JsonParser.java:328)
at …Run Code Online (Sandbox Code Playgroud) google-api oauth-2.0 google-api-java-client android-authenticator
我从帐户管理器获取访问令牌以访问所有谷歌Java客户端API,但我需要打开具有谷歌的WebView,必须通过从帐户管理器获取的访问令牌登录.任何人都知道这一点.
我尝试使用cookies(通过这个),但我无法实现它.如果您知道这种方式,请分享代码段.
在Java QuickstartQuickStart.java上的示例中,它们用于标识应用程序,这会弹出一个窗口,要求提供Google凭据以使用该应用程序。您必须下载才能修改Google表格。OAuth client IDclient_secret.json
我的问题是:您可以使用API Key或其他方法来躲避弹出窗口询问Google凭据吗?并且,如果可能的话,如何更改Java代码以实现此目的?
java google-api google-spreadsheet-api google-api-java-client google-oauth
我有以下对象
HttpTransport t = AndroidHttp.newCompatibleTransport();
Run Code Online (Sandbox Code Playgroud)
但是整个AndroidHttp类(com.google.api.client.extensions.android.http.AndroidHttp)都被标记为已弃用。
我不知道使用较新的库替换它的类是什么。
如何替换这个过时的电话?
android google-api-java-client google-api-client android-httptransport
java ×6
google-api ×3
android ×2
gdata-api ×1
gmail ×1
gmail-api ×1
google-glass ×1
google-oauth ×1
maven ×1
oauth-2.0 ×1
webview ×1