示例#1
0
        /// <summary>
        /// </summary>
        /// <param name="authCode">Get the 'code' parameter from the Azure redirect</param>
        /// <returns></returns>
        public async Task <OutlookToken> GetAccessToken(string authCode, Uri onSuccessRedirectUri)
        {
            // Get the 'code' parameter from the Azure redirect

            var authContext = GetAuthenticationContext();

            // Use client ID and secret to establish app identity
            var credential = GetCredentials();

            try {
                // Get the token
                var authResult = await authContext.AcquireTokenByAuthorizationCodeAsync(
                    authCode, onSuccessRedirectUri, credential, Scopes);

                var outlookToken = new OutlookToken();
                // Save the token in the session
                var token = "";

                outlookToken.IsRefreshTokenExpired = false;
                // Try to get user info
                outlookToken.Email        = GetUserEmail(authContext, _clientId, out token);
                outlookToken.Token        = authResult.Token;
                outlookToken.RefreshToken = await GetRefreshRoken(authCode, onSuccessRedirectUri);

                return(outlookToken);
            } catch (Exception ex) {
                throw ex;
            }
        }
 public ActionResult Edit([Bind(Include = "OutlookTokenID,Token,Email")] OutlookToken outlookToken)
 {
     if (ModelState.IsValid)
     {
         db.Entry(outlookToken).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(outlookToken));
 }
示例#3
0
        public async Task <OutlookServicesClient> GetOutlookClient(OutlookToken outlookToken)
        {
            var client = new OutlookServicesClient(new Uri(_outlookApiEndpoint),
                                                   async() => {
                // Since we have it locally from the Session, just return it here.
                return(outlookToken.Token);
            });

            client.Context.SendingRequest2 += (sender, e) => InsertXAnchorMailboxHeader(sender, e, outlookToken.Email);
            return(client);
        }
        public ActionResult Create([Bind(Include = "OutlookTokenID,Token,Email")] OutlookToken outlookToken)
        {
            if (ModelState.IsValid)
            {
                db.OutlookTokens.Add(outlookToken);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(outlookToken));
        }
 private async void AddTokenToDatabase(OutlookToken outlookToken)
 {
     if (outlookToken != null)
     {
         var dbToken = db.OutlookTokens.FirstOrDefault(n => n.Email == outlookToken.Email);
         if (dbToken != null)
         {
             dbToken.Token                 = outlookToken.Token;
             dbToken.RefreshToken          = outlookToken.RefreshToken;
             dbToken.IsRefreshTokenExpired = outlookToken.IsRefreshTokenExpired;
         }
         else
         {
             db.OutlookTokens.Add(outlookToken);
         }
         db.SaveChanges();
     }
 }