使用服务密钥进行SpreadsheetService身份验证,并在尝试获取Feed时出现内部服务器错误

五:

我正在使用SpreadsheetService,并且正在尝试从电子表格网址(https://spreadsheets.google.com/feeds/spreadsheets/private/full获取提要

我正在使用服务密钥进行身份验证。似乎验证正常,但是当我尝试获取提要时出现错误:

ServiceException(com.google.gdata.util.ServiceException:内部服务器错误)。

这是身份验证方法:

public static Credential authenticateWithServiceKey(GoogleApiProperties properties) throws IOException {
    GoogleCredential credential = GoogleCredential.fromStream(new FileInputStream("src/main/resources/prime-moment-274810-940d01c0244d.json"))
            .createScoped(Collections.singleton(properties.getScope()));

    return credential;
}

这就是我创建服务并使用上述方法中的Credential对象进行身份验证的方式:

public void init(GoogleApiProperties properties) throws IOException, GeneralSecurityException {
    Credential credential = GoogleAuthentication.authenticateWithServiceKey(properties);
    service = new SpreadsheetService(properties.getApplicationName());
    service.setOAuth2Credentials(credential);
}

这就是我要获取电子表格列表的位置:

public List<String> getContentList() throws IOException, ServiceException {
    // Define the URL to request.  This should never change.
    URL SPREADSHEET_FEED_URL = new URL(SPREADSHEETS_URL);

    // Make a request to the API and get all spreadsheets.
    SpreadsheetFeed feed = service.getFeed(SPREADSHEET_FEED_URL, SpreadsheetFeed.class);

    // Return a list of spreadsheet names
    return feed.getEntries().stream()
            .map(entry -> entry.getTitle().getPlainText())
            .collect(Collectors.toList());
}

异常是在service.getFeed通话立即发生的。

当我使用常规方法获取OAuth2.0凭据时,它可以正常工作,但需要人工干预(接受通过Google页面的连接)。

凯西:

错误不在于凭证,而在于执行。看来您一切正常,因为这是服务器错误。

尽管Sheets API v3 已于2020年9月弃用,所以我还是建议您使用Sheets API v4 方法:获取电子表格的供稿。

如果您从以前的API转到Sheets API v4迁移-> 检索工作表元数据,则会发现:

如果您只想读取工作表属性,请将includeGridData查询参数设置为false以防止包含电子表格单元格数据。

因此,按照“ 方法:sheets.get”示例可以解决您的问题。

这是我使用的方法的简短版本:

public static void main(String... args) throws IOException, GeneralSecurityException {
        // Build a new authorized API client service.
        final NetHttpTransport HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();
        final String spreadsheetId = "YOUR SPREADSHEET ID";
        final String range = "Class Data!A2:E";
        Sheets service = new Sheets.Builder(HTTP_TRANSPORT, JSON_FACTORY, getCredentials(HTTP_TRANSPORT))
                .setApplicationName(APPLICATION_NAME)
                .build();
        Sheets.Spreadsheets.Get request = service.spreadsheets().get(spreadsheetId);
        request.setIncludeGridData(false);

        //Sheets.Spreadsheets response = request.execute();

        // TODO: Change code below to process the `response` object:
        System.out.println(request.execute());
    }

编辑

要列出电子表格,您必须通过Drive API来完成。

在这种情况下,通过方法Files: List并在查询或q参数上,输入电子表格MIME类型:mimeType = 'application/vnd.google-apps.spreadsheet'

您可以在快速入门中查看如何使用“文件:”列表

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

尝试从服务器获取数据时出现错误

尝试对服务器进行身份验证时,对等方重置Geetting连接

尝试对客户端服务器ssl进行身份验证时,Tomcat 7获取SSLv2Hello被禁用错误

无法使用gmail对SMTP服务器进行身份验证错误

使用服务帐户向Google API进行身份验证时出现failedPrecondition错误

使用Firebase应用程序密钥对服务器进行身份验证

在iOS应用中收到身份验证码时尝试从后端服务器交换身份验证码时使用Redirect_uri

连接到MongoDB服务集群时出错:SASL身份验证步骤上服务器返回错误:身份验证错误身份验证失败

服务代理错误:尝试解除绑定服务时出现内部服务器错误

尝试登录WSO2-IOT-3.3.0中的WSO2 IoT服务器-设备管理控制台时出现身份验证错误

尝试对FCM服务器进行身份验证时发生错误

使用服务帐户进行GCP服务器到服务器的身份验证

尝试对密钥文件进行ssh身份验证:服务器拒绝了我们的密钥

无法使用Windows身份验证向SMTP服务器进行身份验证

使用密钥的扭曲的ssh服务器身份验证

尝试在Swift中使用Json令牌从服务器获取身份验证

为OpenStack的演示用户颁发身份验证令牌时出现内部服务器错误(HTTP 500)

使用Google身份验证在SSH服务器上进行两因素身份验证

尝试检查网址时出现内部服务器错误

服务器不要求密钥进行身份验证

如何使用服务器密钥在Google Spreadsheet Api V4中进行身份验证

使用Cron Job对Mongodb进行身份验证并在服务器上自动备份数据库

尝试使用Gviz的IdeogramTrack时出现内部服务器错误

通过 SSH 密钥进行服务器身份验证失败

无法对身份服务器 SSL 握手错误进行身份验证

403 服务器在使用soapui 获取azure 存储数据时无法对请求进行身份验证

使用 ftplib.FTP_TLS 对 ftps 服务器进行身份验证期间出现 OSError

使用 Blazor 服务器和 Azure AD 身份验证获取身份验证令牌

烧瓶错误 500 内部服务器错误。使用电子邮件/密码进行 Firebase 身份验证