Skip to content

Commit 6267ac1

Browse files
committed
LinkedIn does infact require redirect_uri...
1 parent 42bf2f4 commit 6267ac1

File tree

1 file changed

+17
-1
lines changed

1 file changed

+17
-1
lines changed

flask_oauthlib/client.py

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,13 @@
1919
from werkzeug import parse_options_header, cached_property
2020
from .utils import to_bytes
2121
try:
22-
from urlparse import urljoin
22+
from urllib import urlencode
23+
from urlparse import parse_qsl, urljoin, urlparse, urlunparse
2324
import urllib2 as http
2425
except ImportError:
2526
from urllib import request as http
2627
from urllib.parse import urljoin
28+
from urllib.parse import parse_qsl, urlencode, urlparse, urlunparse
2729
log = logging.getLogger('flask_oauthlib')
2830

2931

@@ -622,10 +624,24 @@ def handle_oauth1_response(self):
622624

623625
def handle_oauth2_response(self):
624626
"""Handles an oauth2 authorization response."""
627+
628+
# Remove the 'code' argument from current URL
629+
oauth_redir_tuple = urlparse(request.url)
630+
query_args = [
631+
arg_pair for arg_pair in parse_qsl(oauth_redir_tuple.query)
632+
if arg_pair[0] != 'code'
633+
]
634+
oauth_redir = urlunparse(
635+
oauth_redir_tuple[0:4] +
636+
(urlencode(query_args, doseq=True),) +
637+
oauth_redir_tuple[5:]
638+
)
639+
625640
client = self.make_client()
626641
remote_args = {
627642
'code': request.args.get('code'),
628643
'client_secret': self.consumer_secret,
644+
'redirect_uri': oauth_redir
629645
}
630646
log.debug('Prepare oauth2 remote args %r', remote_args)
631647
remote_args.update(self.access_token_params)

0 commit comments

Comments
 (0)