如果立即使用访问令牌,必须实现fetch_token吗?

时间:2018-03-11 17:02:09

标签: authlib

AuthlibGitHub这样的服务一起使用时,如果我们只想使用一次令牌来检索用户的个人资料(fetch_token,则需要实施https://api.github.com/user 3}})?我看到“如果OAuth登录只是您想要的,那么您根本不需要fetch_token,”但从技术上讲,我们需要更多,因为我们在调用{github.get之后调用github.authorize_access_token {1}}:

import os

from authlib.flask.client import OAuth
from authlib.client.apps import github
from flask import Flask, redirect, session, url_for

app = Flask(__name__)
oauth = OAuth(app)
app.config["GITHUB_CLIENT_ID"] = os.getenv("GITHUB_CLIENT_ID")
app.config["GITHUB_CLIENT_SECRET"] = os.getenv("GITHUB_CLIENT_SECRET")
app.config["GITHUB_CLIENT_KWARGS"] = {"scope": "user:email"}
github.register_to(oauth)

...

@app.route("/login")
def login():
    redirect_uri = url_for("authorize", _external=True)
    return github.authorize_redirect(redirect_uri)

@app.route("/authorize")
def authorize():
    token = github.authorize_access_token()
    user = github.get("user").json()
    session["login"] = user["login"]
    return redirect(url_for("index"))

即使没有将github.get("user")存储在例如github.profile或数据库中并返回它,token似乎也成功(就像调用session一样)通过调用fetch_token函数?

1 个答案:

答案 0 :(得分:0)

不,您不需要fetch_token

github.authorize_access_token()
print(github.session.token)