1

ここに私のコードです。それは私がOutlookでカレンダーを追加しようとしているヶ月以上されていますが、何も助けてください:(作業していない。機能AcquireTokenByAuthorizationCodeAsyncは決して完了しません。そして、token.Resultは、私が呼んでこの問題を経験しているAcquireTokenByAuthorizationCodeAsyncが完了しません

string authority = ConfigurationManager.AppSettings["authority"]; 
string clientID = ConfigurationManager.AppSettings["clientID"]; 
Uri clientAppUri = new Uri(ConfigurationManager.AppSettings["clientAppUri"]); 
string serverName = ConfigurationManager.AppSettings["serverName"]; 

var code = Request.Params["code"]; 
AuthenticationContext ac = new AuthenticationContext(authority, true); 

ClientCredential clcred = new ClientCredential(clientid, secretkey); 

//ac = ac.AcquireToken(serverName, clientID, clientAppUri, PromptBehavior.Auto); 
//string to = ac.AcquireToken(serverName, clientID, clientAppUri, PromptBehavior.Auto).AccessToken; 
var token = ac.AcquireTokenByAuthorizationCodeAsync(code, new Uri("http://localhost:2694/GetAuthCode/Index/"), clcred, resource: "https://graph.microsoft.com/"); 
string newtoken = token.Result.AccessToken; 
ExchangeService exchangeService = new ExchangeService(ExchangeVersion.Exchange2013); 
exchangeService.Url = new Uri("https://outlook.office365.com/" + "ews/exchange.asmx"); 
exchangeService.TraceEnabled = true; 
exchangeService.TraceFlags = TraceFlags.All; 
exchangeService.Credentials = new OAuthCredentials(token.Result.AccessToken); 
exchangeService.FindFolders(WellKnownFolderName.Root, new FolderView(10)); 

Appointment app = new Appointment(exchangeService); 
app.Subject = ""; 
app.Body = ""; 
app.Location = ""; 
app.Start = DateTime.Now; 
app.End = DateTime.Now.AddDays(1); 
app.Save(SendInvitationsMode.SendToAllAndSaveCopy); 

答えて

0

常にnullでありますAcquireTokenByAuthorizationCodeAsyncresultを使用して代わりにawaitキーワードを使用して、これらすべてのコードが非同期MVCのコントローラにあった

を使用すると、同じシナリオである場合、あなたは二つの方法でこの問題を修正することができます。

1。常にを使用する以下のコードのような、await

public async System.Threading.Tasks.Task<ActionResult> About() 
{ 
    ... 
    var result =await ac.AcquireTokenByAuthorizationCodeAsync(code, new Uri("http://localhost:2694/GetAuthCode/Index/"), clcred, resource: "https://graph.microsoft.com/"); 
    var accessToken = result.AccessToken; 
    ... 
} 

同期コントローラ2.Use:

public void About() 
{ 
    ... 
    var result =ac.AcquireTokenByAuthorizationCodeAsync(code, new Uri("http://localhost:2694/GetAuthCode/Index/"), clcred, resource: "https://graph.microsoft.com/").Result; 
    var accessToken = result.AccessToken; 
    ... 
} 
+0

がまだ動作しません –

関連する問題