Java、Google Sheets API:AuthSub令牌的作用域错误

Java、Google Sheets API:AuthSub令牌的作用域错误,java,google-drive-api,google-sheets,Java,Google Drive Api,Google Sheets,我一直在关注GoogleSheetsAPI上的文档,但我无法让它工作。当我尝试访问电子表格时,出现以下错误: Exception in thread "main" com.google.gdata.client.GoogleService$SessionExpiredException: Token invalid - AuthSub token has wrong scope <HTML> <HEAD> <TITLE>Token invalid - Auth

我一直在关注GoogleSheetsAPI上的文档,但我无法让它工作。当我尝试访问电子表格时,出现以下错误:

Exception in thread "main" com.google.gdata.client.GoogleService$SessionExpiredException: Token invalid - AuthSub token has wrong scope
<HTML>
<HEAD>
<TITLE>Token invalid - AuthSub token has wrong scope</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
<H1>Token invalid - AuthSub token has wrong scope</H1>
<H2>Error 401</H2>
</BODY>
</HTML>
但当我从谷歌硬盘检索文件名时,一切都很顺利


我正在使用的作用域和提要URL:

SPREADSHEET_FEED = "https://spreadsheets.google.com/feeds/spreadsheets/private/full"

SCOPES = Arrays.asList(DriveScopes.DRIVE_METADATA_READONLY,
                       "https://spreadsheets.google.com/feeds/"
                      );

这是带有权限或令牌的东西,还是它只是一个错误的实现?

解决了这个问题。不知何故,该错误是由以下代码段中的DataStoryFactory对象引发的:

GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
                        HTTP_TRANSPORT, JSON_FACTORY, clientSecrets, SCOPES)
                        .setDataStoreFactory(DATA_STORE_FACTORY)
                        .setAccessType("offline")
                        .build();
FileDataStoreFactory对象正在使用放置在以下目录中的“StoredCredential”文件:

$HOME/.credentials $HOME/.credentials 所以,我所需要做的就是删除那个目录,它可以再次创建它。之后,它将进行回调,并要求您在谷歌控制台中为您的应用程序授予权限,现在它将正常工作。或者,您可以通过以下方法更改userId:

Credential mCredential = new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver()) .authorize("user"); Credential mCredential=new AuthorizationCodeInstalledApp(流,new LocalServerReceiver())
.授权(“用户”) 解决了。不知何故,该错误是由以下代码段中的DataStoryFactory对象引发的:

GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
                        HTTP_TRANSPORT, JSON_FACTORY, clientSecrets, SCOPES)
                        .setDataStoreFactory(DATA_STORE_FACTORY)
                        .setAccessType("offline")
                        .build();
FileDataStoreFactory对象正在使用放置在以下目录中的“StoredCredential”文件:

$HOME/.credentials $HOME/.credentials 所以,我所需要做的就是删除那个目录,它可以再次创建它。之后,它将进行回调,并要求您在谷歌控制台中为您的应用程序授予权限,现在它将正常工作。或者,您可以通过以下方法更改userId:

Credential mCredential = new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver()) .authorize("user"); Credential mCredential=new AuthorizationCodeInstalledApp(流,new LocalServerReceiver())
.授权(“用户”);因此,它是一条通用错误消息,适用于访问范围与您要求的不匹配的任何情况,无论是OAuth还是AuthSub。因此,原因可能是使用了不推荐使用的作用域。“”用于Docs list API,并于2015年4月20日被弃用。检查此项以更换驱动器作用域。检查是否可以通过更改作用域来消除此错误。@KRR否,它不会影响此错误,并返回相同的错误。因此,这是一条通用错误消息,适用于访问范围与您要求的不匹配的任何情况,无论是OAuth还是AuthSub。因此,原因可能是使用了不推荐使用的作用域。“”用于Docs list API,并于2015年4月20日被弃用。检查此项以更换驱动器作用域。检查是否可以通过更改作用域来消除此错误。@KRR否,它不会影响此错误,并返回相同的错误。