2016-03-30 35 views
0

içinden Sharepoint tarafından barındırılan uygulama geçerli kullanıcı alma, REST aracılığıyla CRUD işlemleri yapmak için SharePoint tarafından barındırılan uygulamasında kullanıyorum bir ASP.NET Web API'm var. Geçerli kullanıcının kimlik bilgilerini (O365 hesabı) web api denetleyicilerimden almak istiyorum? Mümkün mü? Herhangi bir öneri veya başvurulan çok takdir edilecektir. TIAASP.NET Web API

cevap

0

benim denetleyicisi aşağıdaki kodu kullanarak bunu gerçekleştirmek başardı:

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(); 

... Bu en iyi yöntem ama o iş yaptı emin değilim.