Skip to content

Instantly share code, notes, and snippets.

@ronbeltran
Last active August 28, 2015 05:36
Show Gist options
  • Save ronbeltran/d07030c61ac3a1dd0f6d to your computer and use it in GitHub Desktop.
Save ronbeltran/d07030c61ac3a1dd0f6d to your computer and use it in GitHub Desktop.
#!/usr/bin/env python
# http://support.sugarcrm.com/02_Documentation/04_Sugar_Developer/Sugar_Developer_Guide_6.7/02_Application_Framework/Authentication/Oauth/
# pip install oauth2
import urllib
import urlparse
import oauth2 as oauth
SUGAR_INSTANCE_URL = 'REPLACE-WITH-YOUR-SUGAR-URL'
CONSUMER_KEY = 'YOUR-CONSUMER-KEY'
CONSUMER_SECRET = 'YOUR-CONSUMER-SECRET'
CONSUMER = oauth.Consumer(CONSUMER_KEY, CONSUMER_SECRET)
def create_request_token():
params = {
'method': 'oauth_request_token',
}
REQUEST_TOKEN_URL = SUGAR_INSTANCE_URL + '/service/v4/rest.php?' \
+ urllib.urlencode(params)
CLIENT = oauth.Client(CONSUMER)
resp, content = CLIENT.request(REQUEST_TOKEN_URL, 'GET')
if resp.status != 200:
print 'Create request token failed: {}'.format(resp.status)
return None, None, None
data = dict(urlparse.parse_qsl(content))
return data['oauth_token'], data['oauth_token_secret'], data['authorize_url']
def approve_request_token(token, secret, authorize_url):
params = {
'token': token,
}
APPROVE_REQUEST_TOKEN_URL = authorize_url + '&' + urllib.urlencode(params)
print 'Paste in your browser and click authorization Token button:'
print APPROVE_REQUEST_TOKEN_URL
token_auth_code = raw_input("Token authorization code: ")
return token_auth_code
def request_access_token(token, secret, oauth_verifier):
TOKEN = oauth.Token(token, secret)
TOKEN.set_verifier(oauth_verifier)
CLIENT = oauth.Client(CONSUMER, TOKEN)
params = {
'method': 'oauth_access_token',
}
ACCESS_TOKEN_URL = SUGAR_INSTANCE_URL + '/service/v4/rest.php?' \
+ urllib.urlencode(params)
resp, content = CLIENT.request(ACCESS_TOKEN_URL, 'GET')
if resp.status != 200:
print 'Create request token failed: {}'.format(resp.status)
return None, None, None
data = dict(urlparse.parse_qsl(content))
return data
def main():
token, secret, authorize_url = create_request_token()
oauth_verifier = approve_request_token(token, secret, authorize_url)
data = request_access_token(token, secret, oauth_verifier)
print data
if __name__ == "__main__":
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment