使用带有Kotlin的Microsoft Graph SDK通过userPrincipalName获取访客用户

beq87vna  于 12个月前  发布在  Kotlin
关注(0)|答案(2)|浏览(120)

我也遇到了同样的问题:Get a guest user by userPrincipalName with Microsoft Graph。我想从Graph中获取一个访客用户,但我使用SDK,即Graph Client,并且我使用Kotlin。上面提到的线程中提供的解决方案对我没有帮助。即使我用%23替换#,我仍然得到404 Not Found响应。
我的代码看起来像这样:

val upn = "hans.muster_somecompany.com%23EXT%[email protected]"
client.users(upn)
    .buildRequest()
    .select(USER_FIELDS)
    .get()

字符串
我也试过val upn = "hans.muster_somecompany.com%23EXT%23%40mydomain.onmicrosoft.com",结果一样。
我确定该帐户存在。当我在图形资源管理器中使用相同的查询时,可以找到该用户。

h7wcgrx3

h7wcgrx31#

尝试将#替换为%23并编码% => %2523

val upn = "hans.muster_somecompany.com%2523EXT%[email protected]"
client.users(upn)
    .buildRequest()
    .select(USER_FIELDS)
    .get()

字符串

oogrdqng

oogrdqng2#

当对UPN进行编码时,它首先工作。

val upn = "hans.muster_somecompany.com#EXT#@mydomain.onmicrosoft.com"
val upnEncoded = UriUtils.encodePathSegment(
    upn,
    StandardCharsets.UTF_8
)
// upnEncoded is now "hans.muster_somecompany.com%23EXT%[email protected]"
client.users(upnEncoded)
    .buildRequest()
    .select(USER_FIELDS)
    .get()

字符串
让我感到困惑的是,控制器删除了#和之后的所有内容。这导致了“hans.muster_somecompany.com“。当“手动”编码#并将其移交给客户端时,结果是“hans. muster_somecompany.com%25%23EXT%25%email protected(https://stackoverflow.com/cdn-cgi/l/email-protection)“,这也不起作用。所以,最后,问题不是真正的Graph,而是客户端/控制器如何处理请求参数。

相关问题