我在前端使用react
,在flask
使用rest API
。我在flask
应用程序中设置了两条路由。第一个以这种方式验证了用户身份...
@app.route('/', methods=['GET'])
def authenticate():
reddit = praw.Reddit(
client_id="XXX",
client_secret="XXX",
redirect_uri="http://localhost:8080",
user_agent="analysis script"
)
redirect_url = reddit.auth.url(['identity'], '...', 'permanent')
return jsonify(redirect_url)
认证url
发送到前端,当用户单击锚标记时访问认证...
componentDidMount() {
fetch('http://localhost:5000/', {
method: 'GET',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
}
})
.then(result => result.json())
.then(data => {
console.log(data);
this.setState({redirect_url: data});
})
.catch(e => {
console.log(e);
return e;
});
}
然后将其呈现为...
render() {
var url = this.state.redirect_url;
return (
<div>
<a href={url}>Authenticate</a>
...
当用户单击Authenticate
时,应用程序会提示他们允许我的应用程序访问reddit。他们接受后,会将其重定向到localhost:8080
上的我的应用程序。
现在的问题是,我需要查询该用户的信息,但是我不确定该怎么做。
我添加了另一个用于进行查询的锚标记...
<a href="#" onClick={e => this.handleClick(e)}>check</a>
向我的rest API
发送请求...
handleClick(e) {
fetch('http://localhost:5000/query', {
method: 'GET',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
}
})
.then(result => result.json())
.then(data => {
console.log(data);
})
.catch(e => {
console.log(e);
return e;
});
}
现在我不确定如何查询有关该用户的信息...
@app.route('/query', methods=['GET'])
def query_user():
# I don't know what to put here
假设我想在我的query
路线中实现以下目标...
print(reddit.auth.authorize(code))
print(reddit.user.me())
这些不会起作用,因为我的rest API
没有为任何特定用户存储任何内容,这意味着reddit
对象不再存在。我不确定如何从这里继续。我是否将reddit
对象存储在每个用户的前端,然后我的rest api
可以在他们提出请求时使用它?这似乎不是一个好选择,我什至不知道该怎么做。如果有人可以向我解释更好的方法,那将是有帮助的。