1

Lors de l'obtention de l'URL du profil de l'utilisateur actuel via REST, la balise d'image ne peut pas afficher lorsque le src est mis à jour:SharePoint REST montrer la photo de profil de l'utilisateur actuel

<img id="escMyPic" src="" alt="" /> 

<script type="text/javascript"> 
$.ajax({ 
    url: strURL + "/_api/sp.userprofiles.peoplemanager/getmyproperties", 
    type: "GET", 
    headers: { 
     "accept": "application/json;odata=verbose", 
    }, 
    success: MyPictureSucceeded, 
    error: MyPictureFailed 
}); 
function MyPictureSucceeded(data) { 
    if(data.d.PictureUrl != null) { 
     $('#escMyPic').attr('src', data.d.PictureUrl); 
    } 
} 
function MyPictureFailed() { 
     alert('Error: Unexpected error loading profile picture.'); 
} 
</script> 

L'URL de retour ressemble à ceci dans SharePoint Online: https://tenant-my.sharepoint.com:443/User%20Photos/Profile%20Pictures/email_address_MThumb.jpg?t=63601764394

Il redirige vers: https://tenant-my.sharepoint.com/User%20Photos/Profile%20Pictures/email_address_MThumb.jpg?t=63601764394

l'utilisation d'outils de dev du navigateur, vous voyez le type MIME qui revient n'est pas l'image/jpg, mais t ext/plain. J'ai supprimé le paramètre de chaîne de requête, et même placé l'URL codée en dur dans la balise d'image src, mais elle ne s'affiche pas. Le corps de la réponse dans les outils de développement est également vide. Il semble être rediriger et authentifier avant de montrer. Lorsque vous placez l'URL codée en dur dans la barre d'adresse du navigateur, l'image s'affiche correctement et l'en-tête de réponse dev tools affiche l'image en tant que contenu de l'URL et le type MIME est image/jpg.

Comment obtenez-vous l'image de profil à afficher à partir d'un appel REST?

Répondre

3

En plus de point final /_api/sp.userprofiles.peoplemanager/getmyproperties qui retourne PersonalUrl propriété, photo de profil d'utilisateur peut être demandé via _layouts/15/userphoto.aspx?size=<size>&accountname=<accountname> page où

  • size - pourrait être mis à S/M/L qui signifie petite/moyenne/grande taille de l'image
  • accountname - nom du compte utilisateur

exempl e

var url = getMyPictureUrl(_spPageContextInfo.webAbsoluteUrl,_spPageContextInfo.userLoginName,"M"); 
$('#escMyPic').attr('src', url); 

function getMyPictureUrl(webUrl,accountName,size){ 
    return webUrl + "/_layouts/15/userphoto.aspx?size=" + size + "&accountname=" + accountName; 
} 
+0

Quel est le nom du compte ici? est-ce l'adresse e-mail? Ou 'i: 0 # .f | adhésion | emailAddress' format? Parce que chaque fois que je reçois l'image par défaut. Aussi j'essaye d'obtenir l'image de profil d'autres utilisateurs, pas les utilisateurs actuellement connectés. –

+1

Deuxième, «accountName» doit être fourni dans le format des revendications –

+1

Merci cher .. Cela a fonctionné .... :-) –