Source code for trello.util

# -*- coding: utf-8 -*-
from __future__ import with_statement, print_function, absolute_import
import os
from requests_oauthlib import OAuth1Session


[docs]def create_oauth_token(expiration=None, scope=None, key=None, secret=None, name=None, output=True): """ Script to obtain an OAuth token from Trello. Must have TRELLO_API_KEY and TRELLO_API_SECRET set in your environment To set the token's expiration, set TRELLO_EXPIRATION as a string in your environment settings (eg. 'never'), otherwise it will default to 30 days. More info on token scope here: https://trello.com/docs/gettingstarted/#getting-a-token-from-a-user """ request_token_url = 'https://trello.com/1/OAuthGetRequestToken' authorize_url = 'https://trello.com/1/OAuthAuthorizeToken' access_token_url = 'https://trello.com/1/OAuthGetAccessToken' expiration = expiration or os.environ.get('TRELLO_EXPIRATION', "30days") scope = scope or os.environ.get('TRELLO_SCOPE', 'read,write') trello_key = key or os.environ['TRELLO_API_KEY'] trello_secret = secret or os.environ['TRELLO_API_SECRET'] name = name or os.environ.get('TRELLO_NAME', 'py-trello') # Step 1: Get a request token. This is a temporary token that is used for # having the user authorize an access token and to sign the request to obtain # said access token. session = OAuth1Session(client_key=trello_key, client_secret=trello_secret) response = session.fetch_request_token(request_token_url) resource_owner_key, resource_owner_secret = response.get('oauth_token'), response.get('oauth_token_secret') if output: print("Request Token:") print(" - oauth_token = %s" % resource_owner_key) print(" - oauth_token_secret = %s" % resource_owner_secret) print("") # Step 2: Redirect to the provider. Since this is a CLI script we do not # redirect. In a web application you would redirect the user to the URL # below. print("Go to the following link in your browser:") print("{authorize_url}?oauth_token={oauth_token}&scope={scope}&expiration={expiration}&name={name}".format( authorize_url=authorize_url, oauth_token=resource_owner_key, expiration=expiration, scope=scope, name=name )) # After the user has granted access to you, the consumer, the provider will # redirect you to whatever URL you have told them to redirect to. You can # usually define this in the oauth_callback argument as well. # Python 3 compatibility (raw_input was renamed to input) try: inputFunc = raw_input except NameError: inputFunc = input accepted = 'n' while accepted.lower() == 'n': accepted = inputFunc('Have you authorized me? (y/n) ') oauth_verifier = inputFunc('What is the PIN? ') # Step 3: Once the consumer has redirected the user back to the oauth_callback # URL you can request the access token the user has approved. You use the # request token to sign this request. After this is done you throw away the # request token and use the access token returned. You should store this # access token somewhere safe, like a database, for future use. session = OAuth1Session(client_key=trello_key, client_secret=trello_secret, resource_owner_key=resource_owner_key, resource_owner_secret=resource_owner_secret, verifier=oauth_verifier) access_token = session.fetch_access_token(access_token_url) if output: print("Access Token:") print(" - oauth_token = %s" % access_token['oauth_token']) print(" - oauth_token_secret = %s" % access_token['oauth_token_secret']) print("") print("You may now access protected resources using the access tokens above.") print("") return access_token
if __name__ == '__main__': create_oauth_token() # vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4