簡體   English   中英

使用Google電子表格進行OAuth2身份驗證時出現問題

[英]Issue with OAuth2 authentication with google spreadsheet

我正在使用Java庫進行oauth2身份驗證,以訪問Google電子表格。

我正在使用以下代碼進行OAuth2身份驗證:

credential = new GoogleCredential.Builder().setTransport(HTTP_TRANSPORT)
    .setJsonFactory(JSON_FACTORY)
    .setServiceAccountId(SERVICE_ACCOUNT_EMAIL)
    .setTokenServerEncodedUrl("https://accounts.google.com/o/oauth2/token")
    .setServiceAccountScopes("https://www.googleapis.com/auth/drive", "https://spreadsheets.google.com/feeds", "https://docs.google.com/feeds")
    .setServiceAccountPrivateKeyFromP12File(new File("xxxxx-privatekey.p12")).build();

獲得“憑據”后,使用以下代碼讀取電子表格:

SpreadsheetService service = new SpreadsheetService(
                        "MySpreadsheetIntegration");
service.setOAuth2Credentials(credential);
URL SPREADSHEET_FEED_URL = new URL("https://spreadsheets.google.com/feeds/spreadsheets/private/full");          
SpreadsheetFeed feed = service.getFeed(SPREADSHEET_FEED_URL, SpreadsheetFeed.class);
System.out.println(feed.getTotalResults());

執行上面的代碼將總結果返回給我0。

如果我使用:

service.setUserCredentials("email", "password");

代替oauth2身份驗證,它可以帶給我正確的結果。 不確定OAuth2身份驗證出了什么問題。 同樣,當我從“憑據”對象打印“訪問令牌”時,它也會打印有效的訪問令牌。

我用:

spreadsheetService = new SpreadsheetService("cellmaster.com.au-v0.2");  
spreadsheetService.setHeader("Authorization", "Bearer " + accessToken);

而不是:

spreadsheetService = new SpreadsheetService("cellmaster.com.au-v0.2");  
spreadsheetService.setOAuth2Credentials(credential);

我還必須為刷新令牌添加代碼。 由於訪問令牌即將過期。 但是刷新令牌可以按您期望的那樣工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM