Last active
May 24, 2023 17:18
-
-
Save vividvilla/0343497d7ad743e68a27b6a5fd7482ec to your computer and use it in GitHub Desktop.
Kite Connect Python Flask Example
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) |
Check updated version for Kite 3 here - https://github.com/zerodhatech/pykiteconnect/blob/master/examples/flask_app.py
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
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: