小编led*_*iov的帖子

用于 IMAP 和 SMTP 身份验证的 Office 365 XOAUTH2 失败

最近宣布支持 Exchange Online 中的 IMAP 和 SMTP 的 OAuth 2.0。按照指南,我设置了应用程序权限以及 IMAP 和 SMTP 连接。应用程序配置为Accounts in any organizational directory (Any Azure AD directory - Multitenant)并使用授权代码流

以下 URL 用于授权:

并且添加了以下委派 Microsoft Graph 范围:

在此处输入图片说明

范围,来自代码的请求:

final List<String> scopes = Arrays.asList(
    "offline_access",
    "email",
    "openid",
    "profile",
    "User.Read",
    "Mail.ReadWrite",
    "https%3A%2F%2Foutlook.office365.com%2FIMAP.AccessAsUser.All",
    "https%3A%2F%2Foutlook.office365.com%2FSMTP.Send"
);
Run Code Online (Sandbox Code Playgroud)

我成功收到访问和刷新令牌:

{
    "token_type": "Bearer",
    "scope": "email IMAP.AccessAsUser.All Mail.ReadWrite openid profile SMTP.Send User.Read",
    "expires_in": 3599,
    "ext_expires_in": 3599,
    "access_token": "edited",
    "refresh_token": "edited",
    "id_token": "edited"
}
Run Code Online (Sandbox Code Playgroud)

这是用于连接到 …

java imap smtp oauth-2.0 office365

6
推荐指数
1
解决办法
6745
查看次数

如何使用Spring Data的Optional <Object>返回

我们有一个Hibernate-gnerated域对象的拼凑,例如

@Entity
@Table(name = "events_t", schema = "public")
public class EventsT implements java.io.Serializable {    
    private int id;
    private RecallsT recallsT; // another table
}
Run Code Online (Sandbox Code Playgroud)

使用Spring Data,我无法做到

RecallsT recallsT = recallsDAO.findById(recallId);
Run Code Online (Sandbox Code Playgroud)

我被迫做了

Optional<RecallsT> recallsT = recallsDAO.findById(recallId);
Run Code Online (Sandbox Code Playgroud)

但这引入了另一个问题:现在我不能再使用我的Hibernate对象,因为这不起作用:

eventsT.setRecallsT(recallsT);
Run Code Online (Sandbox Code Playgroud)

现在错误将是它无法将"Optional <...>"对象放入普通对象中.正如我在Hibernate实体中所展示的那样,由于我们生成域对象的传统方式,setter采用直接的普通对象.

该怎么办?

hibernate java-8 spring-data

5
推荐指数
1
解决办法
1216
查看次数

如何在 Vertx 事件循环线程上运行 CompletableFuture 处理程序?

我有一个库 xyz,它为我提供了一个 CompletableFuture,我想在我的 Vertx (v3.5) 事件循环中处理它。目前我正在使用CompletableFuture.handle(BiFunction)(见下文),但我想使用CompletableFuture.handleAsync(BiFunction, Executor),但我无法弄清楚如何在此方法调用中向第二个参数提供 vertx 事件循环线程.

我尝试在Vertx.runOnContext() 中执行整个代码,但 handleAsync 内部的调用仍然在 Java 的 ForkJoin 池上执行,我想避免这种情况。

CompletableFuture<Void> f = xyz.someMethod();
f.handle((v, th) -> { //Want to run this in handleAsync()
   if (th == null) {
     future.complete(null);
   } else {
     future.completeExceptionally(th);
   }
   return null;
});
Run Code Online (Sandbox Code Playgroud)

java reactive-programming java-8 vert.x completable-future

3
推荐指数
1
解决办法
2730
查看次数