1

JSOM を使用して、SP 2013 Online で SharePoint ホスト型アプリに取り組んでいます。私の要件は、電子メール ID を使用してユーザー プロファイル プロパティを取得することです。入力をアカウント名として使用して、任意のユーザープロファイルを取得できることを知っています。

userProfileProperty = peopleManager.getUserProfilePropertyFor(accountName, propertyName)

しかし、ユーザーの電子メールIDを使用して同じことを行うことは可能ですか?

4

1 に答える 1

3

SP.UserProfiles.PeopleManager.getUserProfilePropertyForメソッドはaccountName、パラメーターが要求形式で提供されることを期待しています

ID クレーム形式について

SharePoint 2013 および SharePoint 2010 は、次のエンコード形式で ID クレームを表示します。

<IdentityClaim>:0<ClaimType><ClaimValueType><AuthMode>|<OriginalIssuer (optional)>|<ClaimValue>

説明については、この記事に従ってください。

SharePoint Online (SPO) の場合、アカウントには次の形式が使用されます。

i:0#.f|membership|username@tenant.onmicrosoft.com 

クレームは、電子メール アドレスから作成できます。

function toClaim(email)
{
    return String.format('i:0#.f|membership|{0}',email);
}

var email = 'username@tenant.onmicrosoft.com'; 
var profilePropertyName = "PreferredName";
var accountName = toClaim(email);


function getUserProfilePropertyFor(accountName,profilePropertyName,success,failure)
{
   var context = SP.ClientContext.get_current();
   var peopleManager = new SP.UserProfiles.PeopleManager(context);
   var userProfileProperty = peopleManager.getUserProfilePropertyFor(accountName,profilePropertyName);

   context.executeQueryAsync(
   function(){
      success(userProfileProperty);
   }, 
   failure);
}

使用法

getUserProfilePropertyFor(accountName,profilePropertyName,
   function(property){
      console.log(property.get_value());
   }, 
   function(sender,args){
      console.log(args.get_message());    
   });

参考文献

SharePoint 2013: クレームのエンコード

于 2014-09-29T08:34:26.093 に答える