SharePoint 2013 - 将用户添加到 UserInformationList
SharePoint 2013 - Add a User to The UserInformationList
我目前遇到了一个小问题,我还不太确定如何解决它。情况是这样的。在 SharePoint 2013 中,我使用 REST-API 更新和创建列表项。
如果有 ppl-Picker,则值为 UserInformationList 中用户的 ID。到目前为止,一切都很好。但现在这是我的问题。
这不适用于尚未在 UserInformationList 中的用户。当我搜索尚不存在的用户时,nativc 中的 SharePoint 似乎以某种方式发出 POST-Requests。鉴于目前在 ppl 选择器中输入的字符串,第一个似乎是从另一个列表中获取用户。身材是这样的
<?xml version="1.0" encoding="UTF-8"?>
<Request xmlns="http://schemas.microsoft.com/sharepoint/clientquery/2009" SchemaVersion="15.0.0.0" LibraryVersion="15.0.0.0" ApplicationName="Javascript Library">
<Actions>
<StaticMethod TypeId="{xxxxxxxxxxxxx}" Name="ClientPeoplePickerSearchUser" Id="5">
<Parameters>
<Parameter TypeId="{xxxxxxxxxxxxx}">
<Property Name="AllowEmailAddresses" Type="Boolean">false</Property>
<Property Name="AllowMultipleEntities" Type="Boolean">true</Property>
<Property Name="AllUrlZones" Type="Boolean">false</Property>
<Property Name="EnabledClaimProviders" Type="String" />
<Property Name="ForceClaims" Type="Boolean">false</Property>
<Property Name="MaximumEntitySuggestions" Type="Number">30</Property>
<Property Name="PrincipalSource" Type="Number">15</Property>
<Property Name="PrincipalType" Type="Number">1</Property>
<Property Name="QueryString" Type="String">jack</Property>
<Property Name="Required" Type="Boolean">false</Property>
<Property Name="SharePointGroupID" Type="Number">0</Property>
<Property Name="UrlZone" Type="Number">0</Property>
<Property Name="UrlZoneSpecified" Type="Boolean">false</Property>
<Property Name="Web" Type="Null" />
<Property Name="WebApplicationID" Type="String">{00000000-0000-0000-0000-000000000000}</Property>
</Parameter>
</Parameters>
</StaticMethod>
</Actions>
<ObjectPaths />
</Request>
然后返回 JSON 用户信息。当我现在发送第二个表单时 POST- 请求基本上包含所有看起来有点像这样的表单信息
<?xml version="1.0" encoding="UTF-8"?>
<Request xmlns="http://schemas.microsoft.com/sharepoint/clientquery/2009" SchemaVersion="15.0.0.0" LibraryVersion="15.0.0.0" ApplicationName="Javascript Library">
<Actions>
<ObjectPath Id="3" ObjectPathId="2" />
<ObjectPath Id="5" ObjectPathId="4" />
<ObjectPath Id="7" ObjectPathId="6" />
<ObjectPath Id="9" ObjectPathId="8" />
<ObjectPath Id="11" ObjectPathId="10" />
<ExceptionHandlingScopeSimple Id="12">
<Method Name="ValidateUpdateListItem" Id="14" ObjectPathId="10">
<Parameters>
<Parameter Type="Array">
<Object TypeId="{xxxxxxxxxxx}">
<Property Name="ErrorMessage" Type="Null" />
<Property Name="FieldName" Type="String">Title</Property>
<Property Name="FieldValue" Type="String">___test</Property>
<Property Name="HasException" Type="Boolean">false</Property>
</Object>
<Object TypeId="{xxxxxxxxxxx}">
<Property Name="ErrorMessage" Type="Null" />
<Property Name="FieldName" Type="String">Someone</Property>
<Property Name="FieldValue" Type="String" />
<Property Name="HasException" Type="Boolean">false</Property>
</Object>
<Object TypeId="{xxxxxxxxxxx}">
<Property Name="ErrorMessage" Type="Null" />
<Property Name="FieldName" Type="String">LookupField</Property>
<Property Name="FieldValue" Type="String" />
<Property Name="HasException" Type="Boolean">false</Property>
</Object>
<Object TypeId="{xxxxxxxxxxx}">
<Property Name="ErrorMessage" Type="Null" />
<Property Name="FieldName" Type="String">SomeTextField</Property>
<Property Name="FieldValue" Type="String" />
<Property Name="HasException" Type="Boolean">false</Property>
</Object>
<Object TypeId="{xxxxxxxxxxx}">
<Property Name="ErrorMessage" Type="Null" />
<Property Name="FieldName" Type="String">APerson</Property>
<Property Name="FieldValue" Type="String">[{"Key":"i:0#.w|dom\xxxxxx","Description":"DOM\xxxxx","DisplayText":"Some, Name","EntityType":"User","ProviderDisplayName":"Active Directory","ProviderName":"AD","IsResolved":true,"EntityData":{"Title":"","MobilePhone":"","SIPAddress":"some.person@mail.com","Department":"XX-XX","Email":"some.person@mail.com"},"MultipleMatches":[],"AutoFillKey":"i:0#.w|dom\xxxxxxx","AutoFillDisplayText":"Person, Some","AutoFillSubDisplayText":"","AutoFillTitleText":"SomeString","DomainText":"some.domain.net","Resolved":true,"LocalSearchTerm":"some"}]</Property>
<Property Name="HasException" Type="Boolean">false</Property>
</Object>
<Object TypeId="{xxxxxxxxxxx}">
<Property Name="ErrorMessage" Type="Null" />
<Property Name="FieldName" Type="String">ContentType</Property>
<Property Name="FieldValue" Type="String">Element</Property>
<Property Name="HasException" Type="Boolean">false</Property>
</Object>
<Object TypeId="{xxxxxxxxxxx}">
<Property Name="ErrorMessage" Type="Null" />
<Property Name="FieldName" Type="String">ContentTypeId</Property>
<Property Name="FieldValue" Type="String">0x010020785F18D738D74797A0C6B07438E69E</Property>
<Property Name="HasException" Type="Boolean">false</Property>
</Object>
</Parameter>
<Parameter Type="Boolean">false</Parameter>
<Parameter Type="Null" />
</Parameters>
</Method>
</ExceptionHandlingScopeSimple>
</Actions>
<ObjectPaths>
<StaticProperty Id="2" TypeId="{xxxxxxxxxxx}" Name="Current" />
<Property Id="4" ParentId="2" Name="Web" />
<Property Id="6" ParentId="4" Name="Lists" />
<Method Id="8" ParentId="6" Name="GetById">
<Parameters>
<Parameter Type="String">xxxxxxxxxxx</Parameter>
</Parameters>
</Method>
<Method Id="10" ParentId="8" Name="AddItem">
<Parameters>
<Parameter TypeId="{xxxxxxxxxxx}">
<Property Name="FolderUrl" Type="String">/sites/site/lists/theList</Property>
<Property Name="LeafName" Type="Null" />
<Property Name="UnderlyingObjectType" Type="Number">0</Property>
</Parameter>
</Parameters>
</Method>
</ObjectPaths>
</Request>
第二个 post 似乎也以某种方式在 UserInformationList 中创建了用户。所以我的问题是。
有没有办法创建 UserInformationList 中尚不存在的用户,并在创建后取回他们的 ID?
由于我只是在前端开发SharePoint,所以对其架构不是很熟悉。如果你们中有人可以帮助我,那就太好了
您可以在网络上调用 EnsureUser 方法创建用户(如果不存在),return 其 ID。
我目前遇到了一个小问题,我还不太确定如何解决它。情况是这样的。在 SharePoint 2013 中,我使用 REST-API 更新和创建列表项。
如果有 ppl-Picker,则值为 UserInformationList 中用户的 ID。到目前为止,一切都很好。但现在这是我的问题。
这不适用于尚未在 UserInformationList 中的用户。当我搜索尚不存在的用户时,nativc 中的 SharePoint 似乎以某种方式发出 POST-Requests。鉴于目前在 ppl 选择器中输入的字符串,第一个似乎是从另一个列表中获取用户。身材是这样的
<?xml version="1.0" encoding="UTF-8"?>
<Request xmlns="http://schemas.microsoft.com/sharepoint/clientquery/2009" SchemaVersion="15.0.0.0" LibraryVersion="15.0.0.0" ApplicationName="Javascript Library">
<Actions>
<StaticMethod TypeId="{xxxxxxxxxxxxx}" Name="ClientPeoplePickerSearchUser" Id="5">
<Parameters>
<Parameter TypeId="{xxxxxxxxxxxxx}">
<Property Name="AllowEmailAddresses" Type="Boolean">false</Property>
<Property Name="AllowMultipleEntities" Type="Boolean">true</Property>
<Property Name="AllUrlZones" Type="Boolean">false</Property>
<Property Name="EnabledClaimProviders" Type="String" />
<Property Name="ForceClaims" Type="Boolean">false</Property>
<Property Name="MaximumEntitySuggestions" Type="Number">30</Property>
<Property Name="PrincipalSource" Type="Number">15</Property>
<Property Name="PrincipalType" Type="Number">1</Property>
<Property Name="QueryString" Type="String">jack</Property>
<Property Name="Required" Type="Boolean">false</Property>
<Property Name="SharePointGroupID" Type="Number">0</Property>
<Property Name="UrlZone" Type="Number">0</Property>
<Property Name="UrlZoneSpecified" Type="Boolean">false</Property>
<Property Name="Web" Type="Null" />
<Property Name="WebApplicationID" Type="String">{00000000-0000-0000-0000-000000000000}</Property>
</Parameter>
</Parameters>
</StaticMethod>
</Actions>
<ObjectPaths />
</Request>
然后返回 JSON 用户信息。当我现在发送第二个表单时 POST- 请求基本上包含所有看起来有点像这样的表单信息
<?xml version="1.0" encoding="UTF-8"?>
<Request xmlns="http://schemas.microsoft.com/sharepoint/clientquery/2009" SchemaVersion="15.0.0.0" LibraryVersion="15.0.0.0" ApplicationName="Javascript Library">
<Actions>
<ObjectPath Id="3" ObjectPathId="2" />
<ObjectPath Id="5" ObjectPathId="4" />
<ObjectPath Id="7" ObjectPathId="6" />
<ObjectPath Id="9" ObjectPathId="8" />
<ObjectPath Id="11" ObjectPathId="10" />
<ExceptionHandlingScopeSimple Id="12">
<Method Name="ValidateUpdateListItem" Id="14" ObjectPathId="10">
<Parameters>
<Parameter Type="Array">
<Object TypeId="{xxxxxxxxxxx}">
<Property Name="ErrorMessage" Type="Null" />
<Property Name="FieldName" Type="String">Title</Property>
<Property Name="FieldValue" Type="String">___test</Property>
<Property Name="HasException" Type="Boolean">false</Property>
</Object>
<Object TypeId="{xxxxxxxxxxx}">
<Property Name="ErrorMessage" Type="Null" />
<Property Name="FieldName" Type="String">Someone</Property>
<Property Name="FieldValue" Type="String" />
<Property Name="HasException" Type="Boolean">false</Property>
</Object>
<Object TypeId="{xxxxxxxxxxx}">
<Property Name="ErrorMessage" Type="Null" />
<Property Name="FieldName" Type="String">LookupField</Property>
<Property Name="FieldValue" Type="String" />
<Property Name="HasException" Type="Boolean">false</Property>
</Object>
<Object TypeId="{xxxxxxxxxxx}">
<Property Name="ErrorMessage" Type="Null" />
<Property Name="FieldName" Type="String">SomeTextField</Property>
<Property Name="FieldValue" Type="String" />
<Property Name="HasException" Type="Boolean">false</Property>
</Object>
<Object TypeId="{xxxxxxxxxxx}">
<Property Name="ErrorMessage" Type="Null" />
<Property Name="FieldName" Type="String">APerson</Property>
<Property Name="FieldValue" Type="String">[{"Key":"i:0#.w|dom\xxxxxx","Description":"DOM\xxxxx","DisplayText":"Some, Name","EntityType":"User","ProviderDisplayName":"Active Directory","ProviderName":"AD","IsResolved":true,"EntityData":{"Title":"","MobilePhone":"","SIPAddress":"some.person@mail.com","Department":"XX-XX","Email":"some.person@mail.com"},"MultipleMatches":[],"AutoFillKey":"i:0#.w|dom\xxxxxxx","AutoFillDisplayText":"Person, Some","AutoFillSubDisplayText":"","AutoFillTitleText":"SomeString","DomainText":"some.domain.net","Resolved":true,"LocalSearchTerm":"some"}]</Property>
<Property Name="HasException" Type="Boolean">false</Property>
</Object>
<Object TypeId="{xxxxxxxxxxx}">
<Property Name="ErrorMessage" Type="Null" />
<Property Name="FieldName" Type="String">ContentType</Property>
<Property Name="FieldValue" Type="String">Element</Property>
<Property Name="HasException" Type="Boolean">false</Property>
</Object>
<Object TypeId="{xxxxxxxxxxx}">
<Property Name="ErrorMessage" Type="Null" />
<Property Name="FieldName" Type="String">ContentTypeId</Property>
<Property Name="FieldValue" Type="String">0x010020785F18D738D74797A0C6B07438E69E</Property>
<Property Name="HasException" Type="Boolean">false</Property>
</Object>
</Parameter>
<Parameter Type="Boolean">false</Parameter>
<Parameter Type="Null" />
</Parameters>
</Method>
</ExceptionHandlingScopeSimple>
</Actions>
<ObjectPaths>
<StaticProperty Id="2" TypeId="{xxxxxxxxxxx}" Name="Current" />
<Property Id="4" ParentId="2" Name="Web" />
<Property Id="6" ParentId="4" Name="Lists" />
<Method Id="8" ParentId="6" Name="GetById">
<Parameters>
<Parameter Type="String">xxxxxxxxxxx</Parameter>
</Parameters>
</Method>
<Method Id="10" ParentId="8" Name="AddItem">
<Parameters>
<Parameter TypeId="{xxxxxxxxxxx}">
<Property Name="FolderUrl" Type="String">/sites/site/lists/theList</Property>
<Property Name="LeafName" Type="Null" />
<Property Name="UnderlyingObjectType" Type="Number">0</Property>
</Parameter>
</Parameters>
</Method>
</ObjectPaths>
</Request>
第二个 post 似乎也以某种方式在 UserInformationList 中创建了用户。所以我的问题是。
有没有办法创建 UserInformationList 中尚不存在的用户,并在创建后取回他们的 ID?
由于我只是在前端开发SharePoint,所以对其架构不是很熟悉。如果你们中有人可以帮助我,那就太好了
您可以在网络上调用 EnsureUser 方法创建用户(如果不存在),return 其 ID。