我需要在我的Gmail应用程序中实现OAuth2身份验证。应用程序在没有UI的后台运行。所以我有Google帐户(我认为这不是GSuite)。我按照此处的说明创建了服务帐户:https//www.emailarchitect.net/easendmail/sdk/html/object_oauth_service_account.htm (但未分配产品-我没有选择的权限。可能是因为我的帐户不是GSuite吗?之后,我使用JSON文件创建了用于JWT身份验证的密钥。我正在使用google-auth-library-oauth2-http库生成access_token并使用它登录到Gmail邮箱。这是令牌生成的代码片段:
GoogleCredentials credentials = ServiceAccountCredentials.fromStream(new FileInputStream("path_to_json")
.createScoped(Arrays.asList("https://mail.google.com"));
credentials.refreshIfExpired();
AccessToken accessToken = credentials.getAccessToken();
AccessToken已成功检索,但是当我尝试将其用于邮箱身份验证时,我得到了javax.mail.AuthenticationFailedException: [AUTHENTICATIONFAILED] Invalid credentials (Failure)。
这是邮箱连接的代码片段:
Properties props = new Properties();
props.put("mail.imap.ssl.enable", "true");
props.put("mail.imap.auth.mechanisms", "XOAUTH2");
Session session = Session.getInstance(props);
Store store = session.getStore("imap");
store.connect("imap.gmail.com", "my_acc@gmail.com", access_token);
问题是,是否可以通过基于服务帐户数据生成的JWT使用访问令牌对gmail邮箱进行身份验证?可能吗
问题来源:Stack Overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。