gpt4 book ai didi

android - 如果没有 GoogleCredential.Builder,GoogleCredential 将无法构建

转载 作者:太空狗 更新时间:2023-10-29 15:29:00 26 4
gpt4 key购买 nike

在 OAuth2 的 Google 文档中,此处描述了使用身份验证 token 构建 GoogleCredential:

Credential and Credential Store

特别提供了这段代码:

GoogleCredential credential = new GoogleCredential().setAccessToken(accessToken);
Plus plus = Plus.builder(new NetHttpTransport(), new JacksonFactory())
.setApplicationName("Google-PlusSample/1.0")
.setHttpRequestInitializer(credential)
.build()

当我尝试以这种方式构建 GoogleCredential 时,我得到了简短的通知:

Please use the Builder and call setJsonFactory, setTransport and setClientSecrets

在异常的消息字段中。我上周下载了这个库,所以我不确定发生了什么。文档是否已过时?如果是,哪种方法已取代此方法作为从现有身份验证 token 和刷新 token 构建的最佳实践?

顺便说一句,之所以不能使用 Builder,是因为 Google 应用程序控制台没有提供客户端 secret ;它说不再为 Android 应用程序等提供它们。 setClientSecrets(...),因此无法调用。

最佳答案

我最近遇到了这个问题,并找到了适合我的案例的解决方案。

这里是运行条件:程序运行在Android 4.0上,没有使用Google Drive SDK,因为它不允许我们的程序读取Google Drive上不是我们程序创建的文件。我使用 com.google.api.services.drive.* 和 com.google.api.client.googleapis.auth.oauth2.* Java 库。

出现这个问题的代码如下:

GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
httpTransport, jsonFactory, CLIENT_ID, CLIENT_SECRET, Arrays.asList(DriveScopes.DRIVE))
.setAccessType("offline")
.setApprovalPrompt("auto").build();


GoogleTokenResponse response = null;
try {
response = flow.newTokenRequest(authorizationCode).setRedirectUri(REDIRECT_URI).execute();
} catch (IOException e) {
e.printStackTrace();
}

GoogleCredential credential = new GoogleCredential().setFromTokenResponse(response);

但是如果 setAccessType("online") 的参数,上面的代码运行良好;

此问题的解决方案取决于您需要哪种访问类型。

如果您想要“在线”作为访问类型,那么使用 setFromTokenResponse() 应该没问题。

如果你想要“离线”作为accessType,那么你需要使用代码:

GoogleCredential credential = new GoogleCredential.Builder().setTransport(httpTransport)
.setJsonFactory(jsonFactory)
.setClientSecrets(CLIENT_ID, CLIENT_SECRET)
.build()
.setFromTokenResponse(response);

需要提及的一件事是,您需要保持 accessType 设置与 GoogleTokenResponse 和 GoogleAuthorizationCodeFlow 创建一致。

关于android - 如果没有 GoogleCredential.Builder,GoogleCredential 将无法构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15064636/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com