public void SaveSession(LiveConnectSession session) { if (session != null) { ApplicationDataContainer appData = ApplicationData.Current.RoamingSettings; if (appData.Values.ContainsKey(AuthConstants.AccessToken)) { appData.Values.Remove(AuthConstants.AccessToken); } appData.Values.Add(AuthConstants.AccessToken, session.AccessToken); if (appData.Values.ContainsKey(AuthConstants.AuthenticationToken)) { appData.Values.Remove(AuthConstants.AuthenticationToken); } appData.Values.Add(AuthConstants.AuthenticationToken, session.AuthenticationToken); if (!string.IsNullOrEmpty(session.RefreshToken)) { if (appData.Values.ContainsKey(AuthConstants.RefreshToken)) { appData.Values.Remove(AuthConstants.RefreshToken); } appData.Values.Add(AuthConstants.RefreshToken, session.RefreshToken); } if (appData.Values.ContainsKey(AuthConstants.Expires)) { appData.Values.Remove(AuthConstants.Expires); } appData.Values.Add(AuthConstants.Expires, session.Expires); if (appData.Values.ContainsKey(AuthConstants.Scope)) { appData.Values.Remove(AuthConstants.Scope); } appData.Values.Add(AuthConstants.Scope, LiveAuthClient.BuildScopeString(session.Scopes)); TestAuthClient.Scopes = session.Scopes; } }
/// <summary> /// Create a new RefreshTokenOperation object. /// </summary> /// <remarks>This constructor is used when exchanging the refresh token for the access token.</remarks> public RefreshTokenOperation( LiveAuthClient authClient, string clientId, string refreshToken, IEnumerable <string> scopes, SynchronizationContextWrapper syncContext) : base(new Uri(authClient.ConsentEndpoint + LiveAuthClient.TokenEndpoint), null, syncContext) { Debug.Assert(authClient != null, "authClient must not be null."); Debug.Assert(!string.IsNullOrEmpty(clientId)); Debug.Assert(!string.IsNullOrEmpty(refreshToken)); this.AuthClient = authClient; this.Body = String.Format( RefreshTokenOperation.RefreshTokenPostBodyTemplate, HttpUtility.UrlEncode(clientId), refreshToken, HttpUtility.UrlEncode(LiveAuthClient.BuildScopeString(scopes))); }
public static string ProcessRequest(MockWebRequest request) { string responseData = null; if (request.RequestUri.AbsolutePath.StartsWith(FakeService.OAuthTokenEndpoint, StringComparison.OrdinalIgnoreCase)) { Assert.IsTrue(request.ContentType.Equals(ContentTypeFormEncoded, StringComparison.OrdinalIgnoreCase)); string postBody = request.RequestStream.Content; Assert.IsTrue(!string.IsNullOrEmpty(postBody)); IDictionary <string, string> parameters = Helpers.ParseQueryString(postBody); string oldRefreshToken = parameters[AuthConstants.RefreshToken]; Assert.IsTrue(oldRefreshToken.Equals(TestAuthClient.FakeOldRefreshToken, StringComparison.OrdinalIgnoreCase)); return(string.Format( CultureInfo.InvariantCulture, ResponseJson.RefreshTokenResponse, TestAuthClient.FakeAccessToken, TestAuthClient.FakeRefreshToken, HttpUtility.UrlDecode(LiveAuthClient.BuildScopeString(TestAuthClient.Scopes)))); } else if (request.RequestUri.AbsolutePath.StartsWith(FakeService.ApiEndpoint, StringComparison.OrdinalIgnoreCase)) { string authHeader = request.Headers["Authorization"]; Assert.IsTrue(!string.IsNullOrEmpty(authHeader)); Assert.IsTrue(authHeader.StartsWith("bearer ")); ResourceType resourceType = GetResourceType(request.RequestUri); if (resourceType == ResourceType.Me) { if (request.Method != "GET") { responseData = ResponseJson.ErrorInvalidMethod; } else { Assert.IsTrue(request.RequestStream == null); responseData = ResponseJson.Me; } } else if (resourceType == ResourceType.Contact) { if (request.Method == "GET") { Assert.IsTrue(request.RequestStream == null); responseData = ResponseJson.Contact; } else if (request.Method == "PUT") { Assert.IsNotNull(request.RequestStream); Assert.IsNotNull(request.RequestStream.Content); Assert.IsTrue(request.ContentType.Equals(ContentTypeJson)); Assert.IsTrue(request.RequestStream.Content.Equals(ResponseJson.Contact, StringComparison.OrdinalIgnoreCase), "Request body not written correctly."); responseData = ResponseJson.Contact; } else if (request.Method == "DELETE") { Assert.IsTrue(request.RequestStream == null); responseData = string.Empty; } else { responseData = ResponseJson.ErrorInvalidMethod; } } else if (resourceType == ResourceType.Contacts) { if (request.Method == "GET") { Assert.IsTrue(request.RequestStream == null); responseData = ResponseJson.Contacts; } else if (request.Method == "POST") { Assert.IsTrue(request.ContentType.Equals(ContentTypeJson)); Assert.IsNotNull(request.RequestStream); Assert.IsNotNull(request.RequestStream.Content); Assert.IsTrue(request.RequestStream.Content.Equals(ResponseJson.Contact, StringComparison.OrdinalIgnoreCase), "Request body not written correctly."); responseData = ResponseJson.Contact; } else { responseData = ResponseJson.ErrorInvalidMethod; } } else if (resourceType == ResourceType.File) { if (request.Method == "GET") { Assert.IsTrue(request.RequestStream == null); responseData = ResponseJson.File; } else if (request.Method == "PUT") { Assert.IsTrue(request.ContentType.Equals(ContentTypeJson)); Assert.IsNotNull(request.RequestStream); Assert.IsNotNull(request.RequestStream.Content); Assert.IsTrue(request.RequestStream.Content.Equals(ResponseJson.File, StringComparison.OrdinalIgnoreCase), "Request body not written correctly."); responseData = ResponseJson.File; } else if (request.Method == "DELETE") { Assert.IsTrue(request.RequestStream == null); responseData = string.Empty; } else if (request.Method == "MOVE" || request.Method == "COPY") { Assert.IsTrue(request.ContentType.Equals(ContentTypeJson)); Assert.IsNotNull(request.RequestStream); Assert.IsNotNull(request.RequestStream.Content); responseData = ResponseJson.File; } else { responseData = ResponseJson.ErrorInvalidMethod; } } else if (resourceType == ResourceType.Files) { if (request.Method == "GET") { Assert.IsTrue(request.RequestStream == null); responseData = ResponseJson.Files; } else if (request.Method == "POST") { Assert.IsTrue(request.ContentType.Equals(ContentTypeJson)); Assert.IsNotNull(request.RequestStream); Assert.IsNotNull(request.RequestStream.Content); Assert.IsTrue(request.RequestStream.Content.Equals(ResponseJson.File, StringComparison.OrdinalIgnoreCase), "Request body not written correctly."); responseData = ResponseJson.Files; } else { responseData = ResponseJson.ErrorInvalidMethod; } } } return(responseData); }