2016-03-30 17 views
0

Ich habe eine ASP.NET-Web-API, die ich in meiner SharePoint-gehosteten App CRUD-Operationen über REST ausführen. Ich möchte die Anmeldeinformationen des aktuellen Benutzers (O365-Konto) von meinen Web-API-Controllern abrufen. Ist es möglich? Irgendwelche Vorschläge oder verwiesen werden sehr geschätzt.Sharepoint-gehosteten App aktuellen Benutzer aus ASP.NET-Web-API

TIA

Antwort

0

konnte ich dies erreichen, indem Sie den folgenden Code in meinem Controller:

Uri targetWeb = new Uri(HttpContext.Request.QueryString["SPHostUrl"]); 
string targetRealm = TokenHelper.GetRealmFromTargetUrl(spContext.SPHostUrl); 
var responseToken = TokenHelper.GetAppOnlyAccessToken(TokenHelper.SharePointPrincipal, targetWeb.Authority, targetRealm); 
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(spContext.SPHostUrl + "_api/Web/SiteUserInfoList/Items("+ spUser.Id + ")"); // spUser.Id from spContext 
request.Method = "GET"; 
request.Accept = "application/json;odata=verbose"; 
request.ContentType = "application/json"; 
request.Headers.Add("Authorization", "Bearer " + spContext.UserAccessTokenForSPHost); 

WebResponse response = (HttpWebResponse)request.GetResponse(); 
Stream dataStream = response.GetResponseStream(); 
if (dataStream == null) 
{ 
    ViewBag.res = "nothing"; 
}else 
{ 
    StreamReader reader = new StreamReader(dataStream); 
    var result = reader.ReadToEnd(); 
    var resData = Json(result); 
    ViewBag.res= resData.Data; // res must be parse when using js 
} 
return View(); 

... nicht sicher, ob es die beste Praxis ist, aber es hat seinen Zweck erfüllt.

Verwandte Themen