我使用谷歌https://developers.google.com/identity/sign-in/web/server-side-flow下面的例子到目前爲止,我能夠實現以下步驟:在客戶端越來越TokenResponseException:401未經授權
- 用戶認證(瀏覽器)
- 代碼被返回和保存在服務器上db
- 請求驗證碼時TokenResponseException:401未經授權。
我檢查以下內容:
- API啓用
- 在https://developers.google.com/oauthplayground我測試了相同的客戶端ID和客戶端密鑰接入和它的作品
- 閱讀幾乎每一個SO查詢,這是與這個問題有關,但他們都沒有真正幫助。
- 試圖撤銷所有用戶權限並重新要求他們獲取新代碼。
下面是我使用的代碼:
public void getUserAuthTokens(String authCode){
try {
GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(
JacksonFactory.getDefaultInstance(),new FileReader(new ClassPathResource("static\\client_secret.json").getFile()));
List<String> scopes = new ArrayList<>();
scopes.add("https://www.googleapis.com/auth/gmail.readonly");
//String scopes[]={"https://www.googleapis.com/auth/gmail.readonly"};
Collection<String> SCOPES
= Collections.unmodifiableCollection(
Arrays.asList(
new String[]{
GmailScopes.GMAIL_READONLY
}));
GoogleTokenResponse tokenResponse = new GoogleAuthorizationCodeTokenRequest(new NetHttpTransport(),JacksonFactory.getDefaultInstance(),
"https://www.googleapis.com/oauth2/v4/token",
clientSecrets.getDetails().getClientId(),
clientSecrets.getDetails().getClientSecret(),
authCode).setRedirectUri(clientSecrets.getDetails().getRedirectUris().get(0)).setScopes(SCOPES).execute();
String accessToken = tokenResponse.getAccessToken();
System.out.print("Token is: "+accessToken);
}catch (IOException x){
x.printStackTrace();
}
}
一個側面說明,如果我沒有使用setRedirectUri(。clientSecrets.getDetails()getRedirectUris()獲取(0)),然後,我就「重定向失配誤差」
我將不勝感激對此有何想法,我從Standard Error Responses,谷歌的API返回,錯誤代碼401未授權基於跑出
夥計們我真的需要一些幫助在這裏我無法破解這個 – user2145673