私は単一の項目が現在のコンテキスト内のすべての項目をfronm見つけようとしているが、私は常に、このエラーメッセージを取得するように見える:EWS:「(401)不正なリモートサーバーエラーを返しました」
The request failed. The remote server returned an error: (401) Unauthorized.
を
var signInUserId = ClaimsPrincipal.Current.FindFirst(ClaimTypes.NameIdentifier).Value;
var userObjectId = ClaimsPrincipal.Current.FindFirst("http://schemas.microsoft.com/identity/claims/objectidentifier").Value;
AuthenticationResult authenticationResult = null;
AuthenticationContext authenticationContext = new AuthenticationContext(
SettingsHelper.Authority, new model.ADALTokenCache(signInUserId));
authenticationResult = authenticationContext.AcquireToken(
SettingsHelper.ServerName,
new ClientCredential(SettingsHelper.ClientId, SettingsHelper.ClientSecret));
ExchangeService exchange = new ExchangeService(ExchangeVersion.Exchange2013);
exchange.Url = new Uri(SettingsHelper.ServerName + "ews/exchange.asmx");
exchange.TraceEnabled = true;
exchange.TraceFlags = TraceFlags.All;
exchange.Credentials = new OAuthCredentials(authenticationResult.AccessToken);
そして私は私が(IDで)受信したいものを項目定義します:まず、私は交換サービスにアクセスするために、すべてを設定
ItemView view = new ItemView(5);
view.PropertySet = new PropertySet(BasePropertySet.IdOnly);
var tempId = id.Replace('-', '/').Replace('_', '+');
SearchFilter.IsEqualTo searchid = new SearchFilter.IsEqualTo(ItemSchema.Id, tempId);
そして最後にではなく、少なくとも、私は私の項目の中に、この項目を検索してみてください:
FindItemsResults<Microsoft.Exchange.WebServices.Data.Item> results = exchange.FindItems(WellKnownFolderName.Inbox, searchid, view);
そして、私のエラーが発生した場所です。私はこれを行うさまざまな方法を試みましたが、私が何をしても、私は無許可になります。
誰かがこの問題を解決するために正しい方法で私を案内してくれるのでしょうか?私はコードをデバッグすることで見ることができるよう
authenticationResult = authenticationContext.AcquireToken(
SettingsHelper.ServerName,
new ClientCredential(SettingsHelper.ClientId, SettingsHelper.ClientSecret));
:私はからアクセストークンを受け取る行う
EDIT
。
ませリフレッシュトークンはかかわらず、存在しない、これが言いたいことがある場合、私は知らないのですか?
{
typ: "JWT",
alg: "RS256",
x5t: "MnC_VZcATfM5pOYiJHMba9goEKY",
kid: "MnC_VZcATfM5pOYiJHMba9goEKY"
}.
{
aud: "https://outlook.office365.com/",
iss: "https://sts.windows.net/d35f5b06-f051-458d-92cc-2b8096b4b78b/",
iat: 1445416753,
nbf: 1445416753,
exp: 1445420653,
ver: "1.0",
tid: "d35f5b06-f051-458d-92cc-2b8096b4b78b",
oid: "c5da9088-987d-463f-a730-2706f23f3cc6",
sub: "c5da9088-987d-463f-a730-2706f23f3cc6",
idp: "https://sts.windows.net/d35f5b06-f051-458d-92cc-2b8096b4b78b/",
appid: "70af108f-5c8c-4ee4-a40f-ab0b6f5922e0",
appidacr: "1"
}.
[signature]
:これは私の結果であるとして、
The access token is acquired using an authentication method that is too weak to allow access for this application. Presented auth strength was 1, required is 2
EDITは、私はちょうど私がこれを見たところでexchange.ResponseHeaders
にすべての私の方法をデバッグするために管理しました
どこから行く?過去にEWSを使用している間
あなたが認証を働いてきたまで、私はハードセット「exchange.Credentials」を示唆しています... 。あなたの問題のように思われるので.. – Seabizkit
exchange.Credentials =新しいWebCredentials(authEmailAddress、authEmailPassword、 "DOMAINIFYOUHAVEONE"); – Seabizkit
@Seabizkitそれは動作します。これは私が最初にやったことですが、うまくいきますが、OAuthを使用したいのです – Detilium