MSAL 的范围“IMAP.AccessAsUser.All”和“https://outlook.office365.com/IMAP.AccessAsUser.All”有什么区别?

时间:2021-06-04 06:38:38

标签: outlook microsoft-graph-api

我想获取访问令牌以使用 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 哪个是正确的?

0 个答案:

没有答案
相关问题