Skip to content

Commit d75279c

Browse files
authored
Merge pull request requests#397 from requests/linkedin-compliance-removal
Linkedin compliance removal & LinkedIn Example update/fix
2 parents 29ba9af + feafa6d commit d75279c

File tree

5 files changed

+22
-71
lines changed

5 files changed

+22
-71
lines changed

HISTORY.rst

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ UNRELEASED
55
++++++++++
66

77
- Add initial support for OAuth Mutual TLS (draft-ietf-oauth-mtls)
8+
- Removed outdated LinkedIn Compliance Fixes
89

910
v1.3.0 (6 November 2019)
1011
++++++++++++++++++++++++

docs/examples/linkedin.rst

+21-11
Original file line numberDiff line numberDiff line change
@@ -9,31 +9,41 @@ command line interactive example below.
99

1010
.. code-block:: pycon
1111
12+
>>> # Imports
13+
>>> import os
14+
>>> from requests_oauthlib import OAuth2Session
15+
16+
>>> # Set environment variables
17+
>>> os.environ['OAUTHLIB_INSECURE_TRANSPORT'] = '1'
18+
1219
>>> # Credentials you get from registering a new application
1320
>>> client_id = '<the id you get from linkedin>'
1421
>>> client_secret = '<the secret you get from linkedin>'
1522
16-
>>> # OAuth endpoints given in the LinkedIn API documentation
17-
>>> authorization_base_url = 'https://www.linkedin.com/uas/oauth2/authorization'
18-
>>> token_url = 'https://www.linkedin.com/uas/oauth2/accessToken'
23+
>>> # LinkedIn OAuth2 requests require scope and redirect_url parameters.
24+
>>> # Ensure these values match the auth values in your LinkedIn App
25+
>>> # (see auth tab on LinkedIn Developer page)
26+
>>> scope = ['r_liteprofile']
27+
>>> redirect_url = 'http://127.0.0.1'
1928
20-
>>> from requests_oauthlib import OAuth2Session
21-
>>> from requests_oauthlib.compliance_fixes import linkedin_compliance_fix
29+
>>> # OAuth endpoints given in the LinkedIn API documentation
30+
>>> authorization_base_url = 'https://www.linkedin.com/oauth/v2/authorization'
31+
>>> token_url = 'https://www.linkedin.com/oauth/v2/accessToken'
2232
23-
>>> linkedin = OAuth2Session(client_id, redirect_uri='http://127.0.0.1')
24-
>>> linkedin = linkedin_compliance_fix(linkedin)
33+
>>> linkedin = OAuth2Session(client_id, redirect_uri='http://127.0.0.1', scope=scope)
2534
2635
>>> # Redirect user to LinkedIn for authorization
2736
>>> authorization_url, state = linkedin.authorization_url(authorization_base_url)
28-
>>> print 'Please go here and authorize,', authorization_url
37+
>>> print(f"Please go here and authorize: {authorization_url}")
2938
3039
>>> # Get the authorization verifier code from the callback url
31-
>>> redirect_response = raw_input('Paste the full redirect URL here:')
40+
>>> redirect_response = input('Paste the full redirect URL here:')
3241
3342
>>> # Fetch the access token
3443
>>> linkedin.fetch_token(token_url, client_secret=client_secret,
44+
... include_client_id=True,
3545
... authorization_response=redirect_response)
3646
3747
>>> # Fetch a protected resource, i.e. user profile
38-
>>> r = linkedin.get('https://api.linkedin.com/v1/people/~')
39-
>>> print r.content
48+
>>> r = linkedin.get('https://api.linkedin.com/v2/me')
49+
>>> print(r.content)

requests_oauthlib/compliance_fixes/__init__.py

-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
from .facebook import facebook_compliance_fix
44
from .fitbit import fitbit_compliance_fix
5-
from .linkedin import linkedin_compliance_fix
65
from .slack import slack_compliance_fix
76
from .instagram import instagram_compliance_fix
87
from .mailchimp import mailchimp_compliance_fix

requests_oauthlib/compliance_fixes/linkedin.py

-21
This file was deleted.

tests/test_compliance_fixes.py

-38
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
from requests_oauthlib import OAuth2Session
1515
from requests_oauthlib.compliance_fixes import facebook_compliance_fix
1616
from requests_oauthlib.compliance_fixes import fitbit_compliance_fix
17-
from requests_oauthlib.compliance_fixes import linkedin_compliance_fix
1817
from requests_oauthlib.compliance_fixes import mailchimp_compliance_fix
1918
from requests_oauthlib.compliance_fixes import weibo_compliance_fix
2019
from requests_oauthlib.compliance_fixes import slack_compliance_fix
@@ -99,43 +98,6 @@ def test_refresh_token(self):
9998
self.assertEqual(token["refresh_token"], "refresh")
10099

101100

102-
class LinkedInComplianceFixTest(TestCase):
103-
def setUp(self):
104-
mocker = requests_mock.Mocker()
105-
mocker.post(
106-
"https://www.linkedin.com/uas/oauth2/accessToken",
107-
json={"access_token": "linkedin"},
108-
)
109-
mocker.post(
110-
"https://api.linkedin.com/v1/people/~/shares",
111-
status_code=201,
112-
json={
113-
"updateKey": "UPDATE-3346389-595113200",
114-
"updateUrl": "https://www.linkedin.com/updates?discuss=abc&scope=xyz",
115-
},
116-
)
117-
mocker.start()
118-
self.addCleanup(mocker.stop)
119-
120-
linkedin = OAuth2Session("someclientid", redirect_uri="https://i.b")
121-
self.session = linkedin_compliance_fix(linkedin)
122-
123-
def test_fetch_access_token(self):
124-
token = self.session.fetch_token(
125-
"https://www.linkedin.com/uas/oauth2/accessToken",
126-
client_secret="someclientsecret",
127-
authorization_response="https://i.b/?code=hello",
128-
)
129-
self.assertEqual(token, {"access_token": "linkedin", "token_type": "Bearer"})
130-
131-
def test_protected_request(self):
132-
self.session.token = {"access_token": "dummy-access-token"}
133-
response = self.session.post("https://api.linkedin.com/v1/people/~/shares")
134-
url = response.request.url
135-
query = parse_qs(urlparse(url).query)
136-
self.assertEqual(query["oauth2_access_token"], ["dummy-access-token"])
137-
138-
139101
class MailChimpComplianceFixTest(TestCase):
140102
def setUp(self):
141103
mocker = requests_mock.Mocker()

0 commit comments

Comments
 (0)