Skip to content

Instantly share code, notes, and snippets.

@vividvilla
Last active May 24, 2023 17:18
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 4 You must be signed in to fork a gist
  • Save vividvilla/0343497d7ad743e68a27b6a5fd7482ec to your computer and use it in GitHub Desktop.
Save vividvilla/0343497d7ad743e68a27b6a5fd7482ec to your computer and use it in GitHub Desktop.
Kite Connect Python Flask Example
import json
from flask import Flask, request
from kiteconnect import KiteConnect
# Base settings
PORT = 5010
HOST = "127.0.0.1"
# Kite Connect App settings. Go to https://developers.kite.trade/apps/
# to create an app if you don't have one.
kite_api_key = "your_kite_app_api_key"
kite_api_secret = "your_kite_app_api_secret"
# Create a redirect url
redirect_url = "http://{host}:{port}/login".format(host=HOST, port=PORT)
# Login url
login_url = "https://api.kite.trade/connect/login?api_key={api_key}".format(
api_key=kite_api_key)
# Kite connect console url
console_url = "https://developers.kite.trade/apps/{api_key}".format(
api_key=kite_api_key)
# App
app = Flask(__name__)
# Templates
index_template = """
<div>Make sure your app with api_key - <b>{api_key}</b> has set redirect to <b>{redirect_url}</b>.</div>
<div>If not you can set it from your <a href="{console_url}">Kite Connect developer console here</a>.</div>
<a href="{login_url}"><h1>Login to generate access token.</h1></a>"""
login_template = """
<h2 style="color: green">Success</h2>
<div>Access token: <b>{access_token}</b></div>
<h4>User login data</h4>
<pre>{user_data}</pre>
<a target="_blank" href="{holdings_url}"><h4>Fetch user holdings</h4></a>
<a target="_blank" href="{orders_url}"><h4>Fetch user orders</h4></a>
<a target="_blank" href="https://kite.trade/docs/connect/v1/"><h4>Checks Kite Connect docs for other calls.</h4></a>"""
@app.route("/")
def index():
return index_template.format(api_key=kite_api_key,
redirect_url=redirect_url,
console_url=console_url,
login_url=login_url)
@app.route("/login")
def login():
request_token = request.args.get("request_token")
if not request_token:
return """
<span style="color: red">Error while generating request token.</span><a href='/'>
Try again.<a>"""
kite = KiteConnect(api_key=kite_api_key)
data = kite.request_access_token(request_token, secret=kite_api_secret)
holdings_url = ("https://api.kite.trade/portfolio/holdings"
"?api_key={api_key}&access_token={access_token}").format(
api_key=kite_api_key,
access_token=data["access_token"])
orders_url = ("https://api.kite.trade/orders"
"?api_key={api_key}&access_token={access_token}").format(
api_key=kite_api_key,
access_token=data["access_token"])
return login_template.format(access_token=data["access_token"],
user_data=json.dumps(data, indent=4, sort_keys=True),
holdings_url=holdings_url,
orders_url=orders_url)
if __name__ == "__main__":
print("Starting server: http://{host}:{port}".format(host=HOST, port=PORT))
app.run(host=HOST, port=PORT, debug=True)
@TheBhat
Copy link

TheBhat commented Jun 7, 2018

I think there is an issue in line number 62
AttributeError: 'KiteConnect' object has no attribute 'request_access_token'
data = kite.request_access_token(request_token, secret=kite_api_secret)

Access token can be set/get using below code:

 data = kite.generate_session(request_token, api_secret=kite_api_secret)
 kite.set_access_token(data["access_token"])
 access_token =data["access_token "]

@vividvilla
Copy link
Author

@sachin2404
Copy link

I didn't understand how you generated request token automatically. Can you please help with that?

request_token = request.args.get("request_token")

How this line works?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment