Fyers API setup not working, Need Help


redirect_uri = "https://trade.fyers.in/api-login/redirect-uri/index.html"

# WORKING
client_id='TFDVKN1H8N-100'
secret_key = 'XNS7DQJFNR'
FY_ID = "XJ12251"  # Your fyers ID
TOTP_KEY = "XXXX"  # TOTP secret is generated when we enable 2Factor TOTP from myaccount portal
PIN = "XXXX"  # User pin for fyers account


# NOT WORKING
# RC :
client_id='41TG0Q37SI-100'
secret_key = '8IENDRNLCM'
FY_ID = "YR29893"  # Your fyers ID
TOTP_KEY = "XXXX"  # TOTP secret is generated when we enable 2Factor TOTP from myaccount portal
PIN = "v"  # User pin for fyers account


from fyers_apiv3 import fyersModel


"""
In order to get started with Fyers API we would like you to do the following things first.
1. Checkout our API docs :   https://myapi.fyers.in/docsv3
2. Create an APP using our API dashboard :   https://myapi.fyers.in/dashboard/

Once you have created an APP you can start using the below SDK
"""

#### Generate an authcode and then make a request to generate an accessToken (Login Flow)

                         ## app_secret key which you got after creating the app
grant_type = "authorization_code"                  ## The grant_type always has to be "authorization_code"
response_type = "code"                             ## The response_type always has to be "code"
state = "sample"                                   ##  The state field here acts as a session manager. you will be sent with the state field after successfull generation of auth_code


### Connect to the sessionModel object here with the required input parameters
appSession = fyersModel.SessionModel(client_id = client_id, redirect_uri = redirect_uri,response_type=response_type,state=state,secret_key=secret_key,grant_type=grant_type)

# ## Make  a request to generate_authcode object this will return a login url which you need to open in your browser from where you can get the generated auth_code
generateTokenUrl = appSession.generate_authcode()


# In[ ]:


from datetime import datetime, timedelta, date
from  time import sleep
import os
import pyotp
import requests
import json
import math
import pytz
from urllib.parse import parse_qs,urlparse
import warnings
import pandas as pd
pd.set_option('display.max_columns', None)
warnings.filterwarnings('ignore')

import base64
def getEncodedString(string):
    string = str(string)
    base64_bytes = base64.b64encode(string.encode("ascii"))
    return base64_bytes.decode("ascii")




URL_SEND_LOGIN_OTP="https://api-t2.fyers.in/vagator/v2/send_login_otp_v2"
res = requests.post(url=URL_SEND_LOGIN_OTP, json={"fy_id":getEncodedString(FY_ID),"app_id":"2"}).json()
print("res: ", res)

if datetime.now().second % 30 > 27 : sleep(5)
URL_VERIFY_OTP="https://api-t2.fyers.in/vagator/v2/verify_otp"
res2 = requests.post(url=URL_VERIFY_OTP, json= {"request_key":res["request_key"],"otp":pyotp.TOTP(TOTP_KEY).now()}).json()
print("res2: ", res2)


ses = requests.Session()
URL_VERIFY_OTP2="https://api-t2.fyers.in/vagator/v2/verify_pin_v2"
payload2 = {"request_key": res2["request_key"],"identity_type":"pin","identifier":getEncodedString(PIN)}
res3 = ses.post(url=URL_VERIFY_OTP2, json= payload2).json()
print("res3: ", res3)


ses.headers.update({
    'authorization': f"Bearer {res3['data']['access_token']}"
})


TOKENURL="https://api-t1.fyers.in/api/v3/token"
payload3 = {"fyers_id":FY_ID,
           "app_id":client_id[:-4],
           "redirect_uri":redirect_uri,
           "appType":"100","code_challenge":"",
           "state":"None","scope":"","nonce":"","response_type":"code","create_cookie":True}

print("payload for /v3/token: ", payload3)
res4 = ses.post(url=TOKENURL, json= payload3).json()
print(res4)

url = res4['Url']
print(url)
parsed = urlparse(url)
auth_code = parse_qs(parsed.query)['auth_code'][0]
# auth_code = res4['data']['auth'] # custom personal


grant_type = "authorization_code"

response_type = "code"

session = fyersModel.SessionModel(
    client_id=client_id,
    secret_key=secret_key,
    redirect_uri=redirect_uri,
    response_type=response_type,
    grant_type=grant_type
)

# Set the authorization code in the session object
session.set_token(auth_code)

# Generate the access token using the authorization code
response = session.generate_token()

# Print the response, which should contain the access token and other details
#print(response)

print(response)
access_token = response['access_token']

# Initialize the FyersModel instance with your client_id, access_token, and enable async mode
fyers = fyersModel.FyersModel(client_id=client_id, is_async=False, token=access_token, log_path=os.getcwd())

# Make a request to get the user profile information


fyers.get_profile()


# WORKING OUTPUT LOGS
# res:  {'s': 'ok', 'code': 1043, 'client_name': 'Jai Chaudhry', 'nick_name': 'Jai', 'pin_created': True, 'totp_enabled': True, 'avatar_link': None, 'message': 'user exist', 'mobile_no': '88xxxxxx82', 'email_id': '[email protected]', 'request_key': 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyZXF1ZXN0X2tleSI6IjZTeVlRZXBzb2FHRDQyMEo1Z1FKcTZ6a0JqdWVyRFRuS3R5U3lkU1Z0NVVEU0QxWEtFIiwic3ViIjoidG90cF9sb2dpbiIsImZ5X2lkIjoiWEoxMjI1MSIsImFwcF9pZCI6IjIiLbnRfbmFtZSI6IkphaSBDaGF1ZGhyeSIsImlhdCI6MTc0MTIwNTIzMSwiZXhwIjoxNzQxMjA2MTMxLCJuYmYiOjE3NDEyMDUyMzF9.3_OMyWcbyIzja3hDoKm4dLgwvt19G1gWGOvt8RHQjPs'}
# res2:  {'s': 'ok', 'code': 2, 'request_key': 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE3NDEyMDUyMzEsImV4cCI6MTc0MTI5MTYzMSwibmJmIjoxNzQxMjA1MjMxLCJmeV9pZCI6IlhKMTIyNTEiLCJyZXF1ZXN0X2tleSI6InFxaVN4SHZDMkp4TmYwZ2tWelRuQzFpN2FqWU1XaGpGTjhlV0dLbFyaXl2TU5GIn0.Z7xcg_GQf9HRwC38nfExkTIwXPV1aeDgyoXh-Yp-vWo', 'client_name': 'Jai Chaudhry', 'nick_name': 'Jai', 'pin_created': True, 'message': 'fy_id and OTP verified successfully'}
# res3:  {'s': 'ok', 'code': 1004, 'message': 'Pin is Verified', 'data': {'refresh_token': 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2xvZ2luLmZ5ZXJzLmluIiwiaWF0IjoxNzQxMjA1MjMyLCJleHAiOjE3NDg5ODEyMzIsIm5iZiI6MTc0MTIwNTIzMiwiYXVkIjpbIng6MCIsIng6MSIsIng6MiIsImQ6MSJdLCJzdWIiOiJyZWZyZXNoX3Rva2VuIiwiYXRfaGFzaCI6ImdBQUFBQUJueUs3dzFkT1pKNGxpTlpoendQMWRVUExKVzRsc3dpcmNSamxNZjZwZ0tuWW1SZEFpZkhlYnpXYVkzX1ZRbjhwd1o5TEFuazVsLVJ0cXJPeTFSUmlwQldTa29JMUtsMzl4Mzg0cV9tQl91WlZ1ckhrPSIsImRpc3BsYXlfbmFtZSI6IkpBSSBDSEFVREhSWSIsImZ5X2lkIjoiWEoxMjI1MSIsImFwcFR5cGUiOiIiLCJwb2FfZmxhZyI6Ik4iLCJpc010ZkVuYWJsZWQiOiJOIiwiaXNEZHBpRW5hYmxlZCI6Ik4iLCJjdWdfbXRmIjoiWSJ9.v1G_FSef7EO3_KwaLvwuHYyb0WfrbNM3OykGhrkKZ3I', 'access_token': 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2xvZ2luLmZ5ZXJzLmluIiwiaWF0IjoxNzQxMjA1MjMyLCJleHAiOjE3NDEyMjEwMTIsIm5iZiI6MTc0MTIwNTIzMiwiYXVkIjpbIng6MCIsIng6MSIsIng6MiIsImQ6MSJdLCJzdWIiOiJhY2Nlc3NfdG9rZW4iLCJhdF9oYXNoIjoiZ0FBQUFBQm55Szd3MWRPWko0bGlOWmh6d1AxZFVQTEpXNGxzd2lyY1JqbE1mNnBnS25ZbVJkQWlmSGVieldhWTNfVlFuOHB3WjlMQW5rNWwtUnRxck95MVJSaXVaVnVySGs9IiwiZGlzcGxheV9uYW1lIjoiSkFJIENIQVVESFJZIiwiZnlfaWQiOiJYSjEyMjUxIiwiYXBwVHlwZSI6IiIsInBvYV9mbGFnIjoiTiIsImlzTXRmRW5hYmxlZCI6Ik4iLCJpc0RkcGlFbmFibGVkIjoiTiIsImN1Z19tdGYiOiJZIiwiaHNtX2tleSI6IjdkOTBkNmZiMGE2OWIzNDQwNTczNTQ5NmU0Y2FkMjhhMjI5MDE1ZGJkNTNmZjA3NmVhNTAzODk5In0.bQmBJHoIscOrKJ3_98lCZDrbczQA8UNonjfKli2p11M'}}
# payload for /v3/token:  {'fyers_id': 'XJ12251', 'app_id': 'TFDVKN1H8N', 'redirect_uri': 'https://trade.fyers.in/api-login/redirect-uri/index.html', 'appType': '100', 'code_challenge': '', 'state': 'None', 'scope': '', 'nonce': '', 'response_type': 'code', 'create_cookie': True}
# {'s': 'ok', 'code': 308, 'message': '', 'cookie': '_FYERS=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2xvZ2luLmZ5ZXJzLmluIiwiaWF0IjoxNzQxMjA1MjMzLCJleHAiOjE3NDM3OTcyMzMsIm5iZiI6MTc0MTIwNTIzMywiYXVkIjpbIjEiLCIyIl0sInN1YiI6IjEiLCJhdF9oYXNoIjoiZ0FBQUFBQm55Szd3MWRPWko0bGlOWmh6d1AxZFVQTEpXNGxzd2lyY1JqbE1mNnBnS25ZbVJkQWlmSGVieldhWTNfVlFuOHB3WjlMQW5rNWwtUnRxck95MVJSaXBCV1Nrb0kxS2wzOXgzODRxX21CX3VaVnVySGs9IiwiZGlzcGxheV9uYW1lIjoiWEoxMjI1MSIsIm9tcyI6IlIwIiwiaHNtX2tleSI6bnVsbCwiaXNEZHBpRW5hYmxlZCI6bnVsbCwiaXNNdGZFbmFibGVkIjpudWxsfQ.IGQwovcq9EZoYnNI5kKOLlf4EWzU3U3T-jEkKlo4LE4', 'Url': 'https://trade.fyers.in/api-login/redirect-uri/index.html?s=ok&code=200&auth_code=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJhcGkubG9naW4uZnllcnMuaW4iLCJpYXQiOjE3NDEyMDUyMzMsImV4cCI6MTc0MTIzNTIzMywibmJmIjoxNzQxMjA0NjMzLCJhdWQiOiJbXCJ4OjBcIiwgXCJ4OjFcIiwgXCJkOjFcIiwgXCJkOjJcIiwgXCJ4OjBcIl0iLCJzdWIiOiJhdXRoX2NvZGUiLCJkaXNwbGF5X25hbWUiOiJYSjEyMjUxIiwib21zIjoiSzEiLCJoc21fa2V5IjoiN2Q5MGQ2ZmIwYTY5YjM0NDA1NzM1NDk2ZTRjYWQyOGEyMjkwMTVkYmQ1M2ZmMDc2ZWE1MDM4OTkiLCJpc0RkcGlFbmFibGVkIjoiTiIsImlzTXRmRW5hYmxlZCI6Ik4iLCJub25jZSI6IiIsImFwcF9pZCI6IlRGRFZLTjFIOE4iLCJ1dWlkIjoiZmJlOGUwN2FkMDQ4NDM2YmFiZGI4ZWJlOGYzOuMC4wIiwic2NvcGUiOiIifQ.zwTsnS4ia4dvwph2T_RxY_mJ4hIojVMCqM6P7vivJrA&state=None'}
# https://trade.fyers.in/api-login/redirect-uri/index.html?s=ok&code=200&auth_code=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJhcGkubG9naW4uZnllcnMuaW4iLCJpYXQiOjE3NDEyMDUyMzMsImV4cCI6MTc0MTIzNTIzMywibmJmIjoxNzQxMjA0NjMzLCJhdWQiOiJbXCJ4OjBcIiwgXCJ4OjFcIiwgXCJkOjFcIiwgXCJkOjJcIiwgXCJ4OjBcIl0iLCJzdWIiOiJhdXRoX2NvZGUiLCJkaXNwbGF5X25hbWUiOiJYSjEyMjUxIiwib21zIjoiSzEiLCJoc21fa2V5IjoiN2Q5MGQ2ZmIwYTY5YjM0NDA1NzM1NDk2ZTRjYWQyOGEyMjkwMTVkYmQ1M2ZmMDc2ZWE1MDM4OTkiLCJpc0RkcGlFbmFibGVkIjoiTiIsImlzTXRmRW5hYmxlZCI6Ik4iLCJub25jZSI6IiIsImFwcF9pZCI6IlRGRFZLTjFIOE4iLCJ1dWlkIjoiZmJlOGUwN2FkMDQ4NDM2YmFiZGI4ZWJlOGYzOTRlOTMiLCJpcEFkZHIiOiIwLjAuMC4wIiwic2NvcGUiOiIifQ.zwTsnS4ia&state=None
# {'s': 'ok', 'code': 200, 'message': '', 'access_token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJhcGkuZnllcnMuaW4iLCJpYXQiOjE3NDEyMDUyMzQsImV4cCI6MTc0MTIyMTAxNCwibmJmIjoxNzQxMjA1MjM0LCJhdWQiOlsieDowIiwieDoxIiwiZDoxIiwiZDoyIiwieDowIl0sInN1YiI6ImFjY2Vzc190b2tlbiIsImF0X2hhc2giOiJnQUFBQUFCbnlLN3lhQkZYSDJBeEltcS1GbS1neGU1MEExeWJoT0k3cDFrd3JHaG5IMkNHb0FGMWNFWHlpWHk5UGpObEx4a1lxZjFMbkY4Sm92YXlleDdfUlNBUF9SdzBwZHB5Q25tN3JKWmZqTUNOVl96ZWlVMD0iLCJkaXNwbGF5X25hbWUiOiJKQUkgQ0hBVURIUlkiLCJvbXMiOiJLMSIsImhzbV9rZXkiOiI3ZDkwZDZmYjBhNjliMzQ0MDU3MzU0OTZlNGNhZDI4YTIyOTAxNWRiZDUzZmYwNzZlYTUwMzg5OSIsImlzRGRwaUVuYWJsZWQiOiJOIiwiaXNNdGZFbmFibGVkIjoiTiIsImZ5X2lkIjoiWEoxMjI1MSIsImFwcFR5cGUiOjEwMCwicG9hX2ZsYWciOiJOIn0.LlK2IGeb8IYpJdrHNhUVOsXx28oGzRWxD-1KkzakRX4', 'refresh_token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJhcGkuZnllcnMuaW4iLCJpYXQiOjE3NDEyMDUyMzQsImV4cCI6MTc0MjQzMDYxNCwibmJmIjoxNzQxMjA1MjM0LCJhdWQiOlsieDowIiwieDoxIiwiZDoxIiwiZDoyIiwieDowIl0sInN1YiI6InJlZnJlc2hfdG9rZW4iLCJhdF9oYXNoIjoiZ0FBQUFBQm55Szd5YUJGWEgyQXhJbXEtRm0tZ3hlNTBBMXliaE9JN3Axa3dyR2huSDJDR29BRjFjRVh5aVh5OVBqTmxMeGtZcWYxTG5GOEpvdmF5ZXg3X1JTQVBfUncwcGRweUNubTdySlpmak1DTlZfemVpVTA9IiwiZGlzcGxheV9uYW1lIjoiSkFJIENIQVVESFJZIiwib21zIjoiSzEiLCJoc21fa2V5IjoiN2Q5MGQ2ZmIwYTY5YjM0NDA1NzM1NDk2ZTRjYWQyOGEyMjkwMTVkYmQ1M2ZmMDc2ZWE1MDM4OTkiLCJpc0RkcGlFbmFibGVkIjoiTiIsImlzTXRmRW5hYmxlZCI6Ik4iLCJmeV9pZCI6IlhKMTIyNTEiLCJhcHBUeXBlIjoxMDAsInBvYV9mbGFnIjoiTiJ9.kqyRbmOdBWrsp8_E_vvb0wqu4N'}



# NOT WORKING OUTPUT LOGS
# res:  {'s': 'ok', 'code': 1043, 'client_name': 'Rakhi Chaudhry', 'nick_name': 'Rakhi', 'pin_created': True, 'totp_enabled': True, 'avatar_link': None, 'message': 'user exist', 'mobile_no': '98xxxxxx11', 'email_id': '[email protected]', 'request_key': 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyZXF1ZXN0X2tleSI6Imt6ZktSRXM5Q2VDR2pwdmRYU1N1a0g3MmdCdUVPeUlxajBWdWJ0RFhjUzg3dU92WGI0Iiwic3ViIjoidG90cF9sb2dpbiIsImZ5X2lkIjoiWVIyOTg5MyIsImFwcF9pZCI6IjIiLCJjbGllbnRfbmFtZSI6IlJha2hpIENoYXVkaHJ5IiwiaWF0IjoxNzQxMjA5NzY0LCJleHAiOjE3NDEyMTA2NjQsIm5iZiI6MTc0MTIwOTc2NH0.RQOFrb3Z9DyUbrS0zJJHaDdOP3MMroyGKULamyk4J-Q'}
# res2:  {'s': 'ok', 'code': 2, 'request_key': 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE3NDEyMDk3NjQsImV4cCI6MTc0MTI5NjE2NCwibmJmIjoxNzQxMjA5NzY0LCJmeV9pZCI6IllSMjk4OTMiLCJyZXF1ZXN0X2tleSI6IllWbVZVSWs2MkhqYVQ0SkhnZGwwa1dpMEpmWEtnYnZzbExVTE9pTjBSeTlESHBqU0lCIn0.lj7YN2yu9_yucxh7Eq9UIfV-RUp8nvq7CcVYVnqZ-JM', 'client_name': 'Rakhi Chaudhry', 'nick_name': 'Rakhi', 'pin_created': True, 'message': 'fy_id and OTP verified successfully'}
# res3:  {'s': 'ok', 'code': 1004, 'message': 'Pin is Verified', 'data': {'refresh_token': 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2xvZ2luLmZ5ZXJzLmluIiwiaWF0IjoxNzQxMjA5NzY1LCJleHAiOjE3NDg5ODU3NjUsIm5iZiI6MTc0MTIwOTc2NSwiYXVkIjpbIng6MCIsIng6MSIsIng6MiIsImQ6MSJdLCJzdWIiOiJyZWZyZXNoX3Rva2VuIiwiYXRfaGFzaCI6ImdBQUFBQUJueU1DbFdCcW5nY0tuWUcyck5TRXQ2N2RrWTktckxzYmFBbTRPT2ZaQXVPNXhJVlUtc2o3T1hreE5CUXFFX181bngwMnc2eTkzLUtiVlJDVlRzVkRqZzFHS3dwcEJ5N2ZxWTVqUWduUzZCVXRzQXBBPSIsImRpc3BsYXlfbmFtZSI6IlJBS0hJIENIQVVESFJZIiwiZnlfaWQiOiJZUjI5ODkzIiwiYXBwVHlwZSI6IiIsInBvYV9mbGFnIjoiTiIsImlzTXRmRW5hYmxlZCI6Ik4iLCJpc0RkcGlFbmFibGVkIjoiTiIsImN1Z19tdGYiOiJOIn0.a_kDwTHqnOIuPjDwMUqqIYu5GQbpPC2_BkfvLwYYNzc', 'access_token': 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2xvZ2luLmZ5ZXJzLmluIiwiaWF0IjoxNzQxMjA5NzY1LCJleHAiOjE3NDEyMjEwNDUsIm5iZiI6MTc0MTIwOTc2NSwiYXVkIjpbIng6MCIsIng6MSIsIng6MiIsImQ6MSJdLCJzdWIiOiJhY2Nlc3NfdG9rZW4iLCJhdF9oYXNoIjoiZ0FBQUFBQm55TUNsV0JxbmdjS25ZRzJyTlNFdDY3ZGtZOS1yTHNiYUFtNE9PZlpBdU81eElWVS1zajdPWGt4TkJRcUVfXzVueDAydzZ5OTMtS2JWUkNWVHNWRGpnMUdLd3BwQnk3ZnFZNWpRZ25TNkJVdHNBcEE9IiwiZGlzcGxheV9uYW1lIjoiUkFLSEkgQ0hBVURIUlkiLCJmeV9pZCI6IllSMjk4OTMiLCJhcHBUeXBlIjoiIiwicG9hX2ZsYWciOiJOIiwiaXNNdGZFbmFibGVkIjoiTiIsImlzRGRwaUVuYWJsZWQiOiJOIiwiY3VnX210ZiI6Ik4iLCJoc21fa2V5IjoiNWJjNGI4Y2Q2OTM2MDIzMzAwMWZlMDRlMGJhOThkNzU1M2U2ZTA1YTM4ZTAyNGExMzBkNWI5MDEifQ.LVIP2kjlq9DEPA'}}
# payload for /v3/token:  {'fyers_id': 'YR29893', 'app_id': '41TG0Q37SI', 'redirect_uri': 'https://trade.fyers.in/api-login/redirect-uri/index.html', 'appType': '100', 'code_challenge': '', 'state': 'None', 'scope': '', 'nonce': '', 'response_type': 'code', 'create_cookie': True}
# {'s': 'ok', 'code': '', 'message': '', 'data': {'appName': '2503-1', 'image': None, 'app_id': '41TG0Q37SI', 'user_id': 'YR29893', 'redirectUrl': 'https://trade.fyers.in/api-login/redirect-uri/index.html', 'permissions': ['x:2', 'd:1', 'd:2'], 'auth': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJhcGkuZnllcnMuaW4iLCJpYXQiOjE3NDEyMDk3NjUsImV4cCI6MTc0MTIxMDA2NSwibmJmIjoxNzQxMjA5NzY1LCJhdWQiOiJbXCJ4OjBcIiwgXCJ4OjFcIiwgXCJ4OjJcIiwgXCJkOjFcIiwgXCJkOjJcIiwgXCJ4OjFcIiwgXCJ4OjBcIiwgXCJ4OjFcIiwgXCJ4OjBcIiwgXCJ4OjFcIiwgXCJ4OjBcIl0iLCJzdWIiOiJhY2Nlc3NfdG9rZW4iLCJhdF9oYXNoIjoiZ0FBQUFBQm55TUNsV0JxbmdjS25ZRzJyTlNFdDY3ZGtZOS1yTHNiYUFtNE9PZlpBdU81eElWVS1zajdPWGt4TkJRcUVfXzVueDAydzZ5OTMtS2JWUkNWVHNWRGpnMUdLd3BwQnk3ZnFZNWpRZ25TNkJVdHNBcEE9IiwiZGlzcGxheV9uYW1lIjoiWVIyOTg5MyIsIm9tcyI6IlIwIiwiaHNtX2tleSI6IjViYzRiOGNkNjkzNjAyMzMwMDFmZTA0ZTBiYTk4ZDc1NTNlNmUwNWEzOGUwMjRhMTMwZDViOTAxIiwiaXNEZHBpRW5hYmxlZCI6Ik4iLCJpc010ZkVuYWJsZWQiOiJOIn0.r40ujUIYLFBW5e09aEz', 'response_type': 'code', 'scope': '', 'nonce': '', 'state': 'None'}}
# ---------------------------------------------------------------------------
# KeyError                                  Traceback (most recent call last)
# <ipython-input-12-f6b98e7b0c2b> in <cell line: 0>()
#     115 print(res4)
#     116 
# --> 117 url = res4['Url']
#     118 print(url)
#     119 parsed = urlparse(url)

# KeyError: 'Url'
1 reply