/// <summary> /// Gets an instance of <code>MicrosoftTokenResponseBody</code> from the specified <code>JsonObject</code>. /// </summary> /// <param name="obj">The instance of <code>JsonObject</code> to parse.</param> public static MicrosoftTokenResponseBody Parse(JsonObject obj) { if (obj == null) return null; // Convert the "scope" string to a collection of scopes MicrosoftScopeCollection scopes = new MicrosoftScopeCollection(); foreach (string name in obj.GetString("scope").Split(' ')) { MicrosoftScope scope = MicrosoftScope.GetScope(name) ?? MicrosoftScope.RegisterScope(name); scopes.Add(scope); } // Parse the rest of the response return new MicrosoftTokenResponseBody(obj) { TokenType = obj.GetString("token_type"), ExpiresIn = TimeSpan.FromSeconds(obj.GetInt32("expires_in")), Scope = scopes, AccessToken = obj.GetString("access_token"), AuthenticationToken = obj.GetString("authentication_token"), RefreshToken = obj.GetString("refresh_token") }; }
/// <summary> /// Generates the authorization URL using the specified state and scope. /// </summary> /// <param name="state">The state to send to Microsoft's OAuth login page.</param> /// <param name="scope">The scope of the application.</param> /// <returns>Returns an authorization URL based on <code>state</code> and <code>scope</code>.</returns> public string GetAuthorizationUrl(string state, MicrosoftScopeCollection scope) { return GetAuthorizationUrl(state, scope.ToString()); }