Index: wp-includes/class-oembed.php
===================================================================
--- wp-includes/class-oembed.php	(revision 41151)
+++ wp-includes/class-oembed.php	(working copy)
@@ -74,6 +74,8 @@
 			'#https?://(www\.)?twitter\.com/\w{1,15}/lists/.*#i'       => array( 'https://publish.twitter.com/oembed',                        true  ),
 			'#https?://(www\.)?twitter\.com/\w{1,15}/timelines/.*#i'   => array( 'https://publish.twitter.com/oembed',                        true  ),
 			'#https?://(www\.)?twitter\.com/i/moments/.*#i'            => array( 'https://publish.twitter.com/oembed',                        true  ),
+			/** With no provider URL, forces discovery of canonical provider */
+			'#https?://(www\.)?twitter\.com/i/web/status(es)?/.*#i'    => array( false,                                                       true  ),
 			'#https?://vine\.co/v/.*#i'                                => array( 'https://vine.co/oembed.{format}',                           true  ),
 			'#https?://(www\.)?soundcloud\.com/.*#i'                   => array( 'https://soundcloud.com/oembed',                             true  ),
 			'#https?://(.+?\.)?slideshare\.net/.*#i'                   => array( 'https://www.slideshare.net/api/oembed/2',                   true  ),
@@ -487,6 +489,14 @@
 	public function fetch( $provider, $url, $args = '' ) {
 		$args = wp_parse_args( $args, wp_embed_defaults( $url ) );
 
+		/* See if the provider URL already has a 'url' parameter */
+		$url_query = parse_url( $provider, PHP_URL_QUERY );
+		parse_str( $url_query, $qvars );
+		if ( isset( $qvars['url'] ) && !empty( $qvars['url'] ) ) {
+			/* We should consider this URL canonical */
+			$url = urldecode( $qvars['url'] );
+		}
+
 		$provider = add_query_arg( 'maxwidth', (int) $args['width'], $provider );
 		$provider = add_query_arg( 'maxheight', (int) $args['height'], $provider );
 		$provider = add_query_arg( 'url', urlencode($url), $provider );
