我正在尝试捕获在身份验证过程中由API返回的访问令牌。从API执行身份验证过程的官方方法是:
from xyz_api import accessToken
app_id = "your_app_id"
app_secret = "your_app_secret"
app_session = accessToken.SessionModel(app_id, app_secret)
response = app_session.auth()
上面的代码将返回一个类似于以下的json:
{
"code" : 200,
"data" : {
"authorization_code": "some random code"
},
}
现在,使用以下代码生成URL:
authorization_code = “your_authorization_code”
app_session.set_token(authorization_code)
url = app_session.generate_token()
这就是我开始有问题的地方。
在这个阶段,API作者推荐的是:
1. Use the generated URL and copy paste it into a browser.
2. The browser will then do the authentication and return the access token to a redirect
url (I used http://localhost:5000).
3. Copy and paste the access token from redirect URL
我想要的:
To be able to finish the authentication and get the access_token from
python code itself.
**我尝试了什么:**使用请求。get(url),但它不起作用。
有没有什么方法可以只用 *python,而不需要打开浏览器 * 来完成这一切?
PS: The API I am trying to use is: https://api-docs.fyers.in/v1#authorization
进一步调查
经过进一步调查,我发现了以下几点:
- API使用oauth
1.从API作者提供的以下代码中获取的URL
url = app_session.generate_token()
就像我写下面的代码一样:
oauth = OAuth2Session('app_id')
authorization_url, state = oauth.authorization_url(url)
1.在这两种情况下返回的url的格式为:
https://api.fyers.in/api/v1/genrateToken?authorization_code=some_auth_code&appId=my_app_id
1.如果我在浏览器中复制粘贴此URL,它会将access_token发送回我的redirect_url(http://localhost:5000)
1.我尝试使用以下代码使用oauth::fetch_token获取访问令牌,但失败了:
oauth1 = OAuth2Session('app_id',state=state,redirect_uri=“http://localhost:5000”)
token = oauth1。fetch_token('https://api.fyers.in/api/v1/genrateToken/',client_secret='app_secret',code='the_auth_code_returned')
真的很感谢你的帮助。
1条答案
按热度按时间jdgnovmf1#
您只能使用Python访问。..您不需要在浏览器中手动执行任何操作。.
这个API不确定你想做什么。
我相信你注册了一个APP,得到了你的
app_secret
的步骤用
authorization_code
回答你您可以像这样访问授权令牌
必须将授权令牌AND you
app_id
作为查询字符串传递给https://api.fyers.in/api/v1/genrateToken?
真实的用户将被要求接受您的应用程序登录,如果接受,用户将被重定向到URL * 我想象你在应用程序注册中通知。
让我知道是否有意义