Я пытаюсь настроить консольное приложение C #, которое может отправлять уведомления / напоминания пользователям через Skype для бизнеса в Интернете из общей учетной записи AD. На днях я был рад увидеть, что, согласно этой странице, UCWA теперь поддерживается в Skype для бизнеса в Интернете: https://msdn.microsoft.com/en-us/library/office/mt650889.aspx.
Я пытался следовать этому руководству, чтобы настроить эту настройку: https://msdn.microsoft.com/en-us/library/office/mt590891(v=office.16).aspx. Пока мне не особо везло ... У меня есть приложение, настроенное в Azure AD, но я застреваю на этапе этой статьи «Запрос токена доступа с использованием неявного потока предоставления» (не уверен на 100%, что я предприняв правильные действия и до этого) ... пока что у меня вот такое:
string clientId = "xxxxxxxx"
string resourceUri = "https://webdir.online.lync.com";
string authorityUri = "https://login.windows.net/common/oauth2/authorize";
AuthenticationContext authContext = new AuthenticationContext(authorityUri);
UserCredential cred = new UserCredential("username", "password");
string token = authContext.AcquireToken(resourceUri, clientId, cred).AccessToken;
var poolReq = CreateRequest("https://webdir.online.lync.com/autodiscover/autodiscoverservice.svc/root", "GET",token);
var poolResp = GetResponse(poolReq);
dynamic tmp = JsonConvert.DeserializeObject(poolResp);
string resourcePool = tmp._links.user.href;
Console.WriteLine(resourcePool);
var accessTokenReq = CreateRequest("https://login.windows.net/common/oauth2/authorize"
+ "?response_type=id_token"
+ "&client_id=" + clientId
+ "&redirect_uri=https://login.live.com/oauth20_desktop.srf"
+ "&state=" + Guid.NewGuid().ToString()
+ "&resource=" + new Uri(resourcePool).Host.ToString()
, "GET",token);
var accessTokenResp = GetResponse(accessTokenReq);
мои методы GetResponse и CreateRequest:
public static string GetResponse(HttpWebRequest request)
{
string response = string.Empty;
using (HttpWebResponse httpResponse = request.GetResponse() as System.Net.HttpWebResponse)
{
//Get StreamReader that holds the response stream
using (StreamReader reader = new System.IO.StreamReader(httpResponse.GetResponseStream()))
{
response = reader.ReadToEnd();
}
}
return response;
}
public static HttpWebRequest CreateRequest(string uri, string method, string accessToken)
{
HttpWebRequest request = System.Net.WebRequest.Create(uri) as System.Net.HttpWebRequest;
request.KeepAlive = true;
request.Method = method;
request.ContentLength = 0;
request.ContentType = "application/json";
request.Headers.Add("Authorization", String.Format("Bearer {0}", accessToken));
return request;
}
accessTokenResp - это онлайн-страница входа в офис, а не токен доступа, который мне нужен, чтобы двигаться дальше ... так что я застрял. Я пробовал несколько вариантов приведенного выше кода.
Я рылся в сети в поисках других примеров, но на самом деле не нашел ни одного, тем более что поддержка UCWA для Office 365 настолько нова. Есть ли у кого-нибудь пример того, как делать то, что я пытаюсь сделать, или может указать мне на один? Все, что я нашел до сих пор, даже не было близко к тому, что я пытаюсь. К сожалению, я не могу использовать клиентский SDK Skype для бизнеса, так как он не отвечает всем моим требованиям.