0
私はSharePointホストのアプリケーションで、REST経由でCRUD操作を行うために使用しているASP.NET Web APIを持っています。私は現在のユーザーの資格情報(O365アカウント)をWeb APIコントローラから取得したいのですか?出来ますか?どんな提案や参照も大歓迎です。 TIASharepointでホストされているアプリケーションをASP.NET Web APIから取得する
私はSharePointホストのアプリケーションで、REST経由でCRUD操作を行うために使用しているASP.NET Web APIを持っています。私は現在のユーザーの資格情報(O365アカウント)をWeb APIコントローラから取得したいのですか?出来ますか?どんな提案や参照も大歓迎です。 TIASharepointでホストされているアプリケーションをASP.NET Web APIから取得する
は、私は私のコントローラに以下のコードを使用することによって、これを達成することができました:
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();
...それがベストプラクティスだが、それは仕事をしたかどうかわかりません。