我有两个与用户数据集相关的问题。
1。 WhoAmI中的UniqueName与UserData中的UserName值相同
User.WhoAmIUser
{
"Identifier": "<string:D2LID>",
"FirstName": "<string>",
"LastName": "<string>",
"UniqueName": "<string>",
"ProfileIdentifier": "<string:D2LID>"
}
User.UserData
{
"OrgId": "<number:D2LID>",
"UserId": "<number:D2LID>",
"FirstName": "<string>",
"MiddleName": "<string>",
"LastName": "<string>",
"UserName": "<string>",
"ExternalEmail": "<string>",
"OrgDefinedId": "<string>",
"UniqueIdentifier": "<string>",
"Activation": "{composite:User.UserActivationData}"
}
2。 如何检索当前经过身份验证的用户电子邮件地址?我试图连接到各种用户API,但都返回“未授权”。即使是“/ d2l / api / lp /(D2LVERSION:version)/ users /(D2LID:userId)”,我的userId被授权为我自己也会被授权。
我已经尝试过Student和Instructor Roles。我可以检索WhoAmI服务,而不是任何其他用户服务。
感谢。
答案 0 :(得分:1)
1)UniqueName
结构中的User.WhoAmIUser
属性将(应该)显示与UserName
中User.UserData
属性相同的值:这是用户的“登录名称“在LMS内。在后端服务中,这两个属性可能是单独维护的,但是对于所有意图和目的,对于调用客户端,它们应该包含相同的值(如果您更改用户记录中的UserName
值通过Web UI,然后进行WhoAmI调用,您将看到更改显示在WhoAmI结果的UniqueName
属性中。
2)检索用户的电子邮件地址可能不是一件简单的事:ExternalEmail
记录中的UserData
属性应包含与用户Email
字段中显示的值相同的值在Web UI中记录。这是LMS在需要向用户发送密码重置消息时将使用的电子邮件地址。
此属性受用户信息隐私角色权限的约束,某些组织可能会选择严格限制谁可以看到该值。
此外,/d2l/api/lp/{ver}/users/
路由本身通常会受到某些组织的限制性角色权限的约束。通常,如果您使用可以访问LMS网页用户界面中用户工具功能的用户角色进行呼叫,则该角色也应该能够访问此API路径。
如果您无权使用该API调用(您可能没有),则无法使用它来查找用户详细信息。
User.User
和Enrollment.ClasslistUser
结构还包含一个属性,用于存储来自用户记录的电子邮件值,以及是否可以调用以检索这些结构(例如,注册API调用,或者classlist API调用),那么你可能有权访问那里的电子邮件值,这取决于主叫用户所拥有的用户信息隐私权限。
所有这些的结果是,许多组织的许多用户都没有权限从他们自己的用户记录中检索他们自己的外部电子邮件地址,因为他们可能没有权限进行检索它的调用,以及它不包含在WhoAmIUser
结构中。