我使用了以下来自google的示例https://developers.google.com/identity/sign-in/web/server-side-flow到目前为止,我能够实现以下步骤:
我检查了以下内容:
下面是我正在使用的代码:
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(客户端Secrets.getDetails().getRedirectUris(.get(0)),那么我得到了“重定向不匹配错误”
我将非常感谢任何想法,因为我用完了
我最终发现我看到了“TokenResponseException:401 Unauthorized ”,这是因为我的数据存储没有用不同的范围更新其凭证。像魔术一样,在从头开始重新启动测试授权之前删除数据存储(并清除会话缓存)会导致成功。我不建议在每种情况下都采用这些步骤;然而,当所有其他方法都失败时,它们可能值得作为调试步骤来尝试。
经过多次调试和搜索,我找到了一个有效的解决方案,我在这里发布这个,以防有人遇到同样的问题。
下面是我使用的代码:
GoogleTokenResponse tokenResponse = new GoogleAuthorizationCodeTokenRequest(new NetHttpTransport(),JacksonFactory.getDefaultInstance(),
"https://www.googleapis.com/oauth2/v4/token",
clientSecrets.getDetails().getClientId(),
clientSecrets.getDetails().getClientSecret(),
authCode, "postmessage")
.execute();
您可以阅读更多关于服务器端应用程序的postmessage@Google登录,将身份验证代码交换为访问令牌
希望有帮助。
根据 Google API 返回的标准错误响应,错误代码 401“未经授权”表示为请求提供的授权凭据存在问题。您可能需要检查以下可能的原因:
有关使用OAuth 2.0访问Google APIs的更多信息,请参见本文档。相关SO帖子中建议的解决方案可能也会有所帮助。
我想使用服务帐户实现谷歌表API请求。我创建了这个代码: 但是我得到了这个错误: com.google.api.client.auth.oauth2.TokenResponseException: 401 未经授权 在这个方法中 你知道我该如何解决这个问题吗?
我的代码:GoogleCredential凭据 credential.refreshToken() 错误日志: 创建服务号的步骤: 我在凭据中的oauth 2.0中创建了一个Web应用程序 然后我用客户端ID创建了一个服务号 现在我正在使用这个服务号和从它生成的p12证书来验证和创建Google凭据的对象 一旦刷新令牌,我就给了我401例外。 在这种情况下,任何帮助都会受到感激
我在eclipse java中从servicenow获取访问令牌时遇到了一个未经授权的问题,但它在postman中运行良好,java代码在另一个servicenow凭据中也运行良好
我成功地将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:( 下面是我的一些配置:
为了发送和检索信封,我正在将我的应用编程接口后端与文档签名集成。我正在使用JWT Grant流。认证选项 在DocuSign开发环境中,我能够使用JWT流和DocuSign C#SKD检索访问令牌。然后我需要调用endpoint,以检索用于调用Docusign的基本uri字段。 当我提出GET请求时https://account-d.docusign.com/oauth/userinfo,包括授权