我想使用服务帐户实现谷歌表API请求。我创建了这个代码:
HttpTransport httpTransport = new NetHttpTransport();
JacksonFactory JSON_FACTORY = new JacksonFactory();
ClassLoader classLoader = this.getClass().getClassLoader();
java.io.File path = new java.io.File(classLoader.getResource("i-6dc0c917ee63.p12").getFile());
GoogleCredential credential = new GoogleCredential.Builder()
.setTransport(httpTransport)
.setJsonFactory(JSON_FACTORY)
.setServiceAccountId("test221@sonora-project.iam.gserviceaccount.com")
.setServiceAccountPrivateKeyFromP12File(path)
.setServiceAccountScopes(Arrays.asList(SheetsScopes.SPREADSHEETS))
.setServiceAccountUser("sonoraw@gmail.com")
.build();
Sheets service = new Sheets.Builder(httpTransport, JSON_FACTORY, null)
.setApplicationName("project")
.setHttpRequestInitializer(credential).build();
Sheets.Spreadsheets spreadsheets = service.spreadsheets();
Spreadsheet includeGridData = spreadsheets.get(spreadsheetId).execute();
但是我得到了这个错误:
com.google.api.client.auth.oauth2.TokenResponseException: 401 未经授权
在这个方法中。执行();
你知道我该如何解决这个问题吗?
根据标准错误响应,错误 401 是由无效的凭据
引起的,这表示身份验证令牌无效或已过期。
建议采取的行动:
如果未修复问题,请不要重试。您需要获得新的身份验证令牌。
有了这个,你可能想要检查令牌过期,其中提到你必须编写代码来预测授予的令牌可能不再工作的可能性。它还给出了令牌可能停止工作的以下可能原因:
希望这有帮助!
我有同样的问题,这让我发疯。我有两个相同应用程序的不同副本,使用相同的凭据。json,但我会在其中一个得到成功的响应,但在另一个得到401未授权的响应。我最终通过删除<code>StoredCredential<code>解决了这个问题。所以,下一次我运行我的应用程序时,我被带到了谷歌的认证页面,它成功了。
TLDR:删除<code>StoredRedential
我使用了以下来自google的示例https://developers.google.com/identity/sign-in/web/server-side-flow到目前为止,我能够实现以下步骤: 用户在客户端(浏览器)进行身份验证。 代码返回并保存在服务器数据库中。 请求身份验证代码令牌时,响应异常:401未授权 我检查了以下内容: 接口已启用 在 https://developers.go
我的代码:GoogleCredential凭据 credential.refreshToken() 错误日志: 创建服务号的步骤: 我在凭据中的oauth 2.0中创建了一个Web应用程序 然后我用客户端ID创建了一个服务号 现在我正在使用这个服务号和从它生成的p12证书来验证和创建Google凭据的对象 一旦刷新令牌,我就给了我401例外。 在这种情况下,任何帮助都会受到感激
我成功地将Graph API用于各种事情,但我需要访问OneNote API来在班级笔记本上执行学生和教师的添加/删除操作。当我用https://www.OneNote.com资源请求一个令牌时,它提供了一个令牌,但当我试图使用它访问OneNote API时,无论发送什么(有效)请求,我都会得到401--“请求不包含有效的身份验证令牌”。 我的令牌请求: POST https://login.mi
我正在使用: 邮递员/失眠检查 为Laravel Passport制作了Laravel文档中描述的所有检查表,经过某些步骤后,我收到了有效OAuth访问令牌的HTTP 401。 由/oauth/token/请求具有客户端id和客户端机密的新访问令牌 使用接收到的访问令牌授权包含Oauth api中间件的简单Laravel REST测试控制器 结尾是1:401:( 下面是我的一些配置:
任何人都可以帮助或建议我应该坚持什么,以便能够代表用户发布-一旦他们从服务或控制台应用程序给了我们许可。 提前谢了。
我尝试了这里给出的例子。 https://developers.google.com/sheets/quickstart/java 它给了我这个例外- 我已经给了它所有必要的许可。 我使用的是表单api版本v4 更新- 如果我在示例中传递而不是,那么它会给我这个响应。 变化- 响应 - 我从这个链接得到了进一步的帮助来解决< code>400 -无法解析范围:类数据!A2:A4" 400错误请求解