一般的なADアカウントからSkype for Businessオンライン経由で通知/通知をユーザーに送信できるC#コンソールアプリケーションを設定しようとしています。先日、このページによれば、UCWAは現在Skype for Businessのオンラインでサポートされていることがわかりました:https://msdn.microsoft.com/en-us/library/office/mt650889.aspxSkype for Business Onlineをコンソールアプリケーションから送信する
私はこのチュートリアルに従うことで、このセットアップを実現しようとしています:https://msdn.microsoft.com/en-us/library/office/mt590891(v=office.16).aspx。これまで私は本当に多くの運がなかった...私はAzureのADで私のアプリケーションを設定しているが、私は "暗黙のグラントフローを使用してアクセストークンを要求している"私は
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は、オフィスのオンラインログオンページではなく、アクセストークンです:
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方法:これまでのところ、私はこれを持っている...)のいずれかその前に正しい行動を取ります前方に進む必要があるので...私は立ち往生しています。上記のコードのかなりのバリエーションを試しました。
私はもっと多くの例でネットを精練してきましたが、特にOffice 365のUCWAサポートはそれほど新しいものではないので、実際には何も見つかりません。誰かが私がやろうとしていることをする方法の例を持っているか、私に1つを指すことができますか?私が今までに見つけたものは、私が試みていることに本当に近くない。 Skype for BusinessクライアントSDKは残念なことに私の要件のすべてを満たしていないため使用できません。
ADALを使用して自動検出応答で返されたUCWAルートリソースのアクセストークンを要求しているときにステップ3でスタックされた場合、次のエラーが表示されます: 'https://webdir1a.online.lync.com/Autodiscover/AutodiscoverServiceという名前のアプリケーション.svc/root/oauth/user?originalDomain = xxxxx.onmicrosoft.comは、xxxxx.onmicrosoft.comという名前のテナントには見つかりませんでした。これは、アプリケーションがテナントの管理者によってインストールされていないか、またはテナントの任意のユーザーが同意していない場合に発生します。「ネイティブのAADアプリケーションが登録されており、正しいアプリIDを使用しています...アイデアはありますか? –
AcquireTokenAsyncに渡すURIがホストURIのみであることを確認してください(例: 'https:// webdir1a.online.lync.com')。パスパーツを含めないでください –
ありがとうございます。それが私の問題でした。私は今、仕事をしている。 –