我想获取访问令牌以使用 MSAL 通过 IMAP 访问 Outlook。
用于获取访问令牌的代码如下(由 Kotlin 编写)。
fun getAccessTokenByMSAL(
appId: String,
scopes: List<String>
): String? {
val scopeSet = HashSet<String>()
scopes.stream().forEach { scope ->
scopeSet.add(scope)
}
val app = PublicClientApplication
.builder(appId)
.authority("https://login.microsoftonline.com/common")
.build();
val params = InteractiveRequestParameters
.builder(URI("http://localhost:8080"))
.scopes(scopeSet)
.build()
val result = app.acquireToken(params).join()
return result.accessToken()
}
要通过 IMAP 访问 Outlook,我想添加“IMAP.AccessAsUser.All”权限作为如下范围。
val scopes = listOf(
"https://outlook.office365.com/IMAP.AccessAsUser.All",
)
val token = getAccessTokenByMSAL(appId, scopes)
然而,结果,当我尝试用我的个人帐户登录时,我在浏览器中收到以下错误信息(错误信息没有嵌入字符串,显示很奇怪。):
Authentication failed. You can return to the application. Feel free to close this browser tab.
Error details: error {0} error_description: {1}
当我按如下方式更改范围并重试时,则身份验证成功。
val scopes = listOf(
"IMAP.AccessAsUser.All"
)
val token = getAccessTokenByMSAL(appId, scopes)
那么,范围“IMAP.AccessAsUser.All”和“https://outlook.office365.com/IMAP.AccessAsUser.All”之间有什么区别?
获取正确的访问令牌以通过 IMAP 连接 Outlook 哪个是正确的?