Poe*_*dit 8 python flask ngrok auth0 actions-on-google
我正在使用Actions on Google(在手机上Google Assistant)并使用它Account Linking登录Auth0(登录窗口:
图像).
但是,我想从我想要的地方注销,Auth0这样我就可以从头开始测试整个过程.
我写了下面的源代码Python和Flask下面的Auth0文档(https://auth0.com/docs/logout).
from flask import Flask, render_template, request, jsonify
import requests
app = Flask(__name__)
@app.route("/", methods=['GET', 'POST'])
def index():
session['user'] = 'Poete_Maudit'
data = request.get_json()
if data is not None:
action = data["queryResult"]["action"]
else:
return 'HERE'
# Triggers actions.intent.SIGN_IN which leads to Auth0
if (action == 'sign'):
return jsonify({"payload": {
"google": {
"expectUserResponse": True,
"isSsml": False,
"noInputPrompts": [],
"systemIntent": {
"data": {
"@type": "type.googleapis.com/google.actions.v2.SignInValueSpec"
},
"intent": "actions.intent.SIGN_IN"
}
}
}
})
# I have other if statements below which retrieve the access token
# and do in general other stuff on Actions on Google app
# but it is too long to include it here
@app.route('/logout')
def logout():
session.clear()
return redirect('https://project_id.eu.auth0.com/v2/logout?returnTo=http://127.0.0.1:5000')
if __name__== "__main__":
app.secret_key = os.urandom(24)
app.run(debug=True)
Run Code Online (Sandbox Code Playgroud)
在我执行了一次整个登录过程后,我手动(从浏览器)手动转到http://127.0.0.1:5000/logout成功重定向到我的位置http://127.0.0.1:5000.在python控制台我得到:
127.0.0.1 - - [06/Jun/2018 14:09:04] "GET /logout HTTP/1.1" 302 -
127.0.0.1 - - [12/Jun/2018 11:03:16] "GET / HTTP/1.1" 200 -
Run Code Online (Sandbox Code Playgroud)
在Auth0日志部分我得到Success Logout(图片).
但是,当我重新启动手机Google智能助理的整个过程时,登录窗口不会出现,我再次登录时也Auth0一样accessToken.
如何通过清除会话和/或cookie来正确注销http://127.0.0.1:5000,从而使Auth0登录窗口再次出现?
PS
1)请记住,请即现在我所做的这一切都是Python和ngrok.如果我重新启动ngrok会话,则登录窗口会重新出现,但显然我想以编程方式执行此操作.
2)请不要把任何事情视为理所当然.在我正在做的事情上,我可能会遗漏一些非常基本的东西,所以请随时问我关于这一点的非常基本的问题.
我已向Google支持发送了有关此消息的消息,我得到了以下答案:
要解除您的帐户,你可以使用这个链接(https://gala-demo.appspot.com),在现场服务ID输入项目ID,并在末尾添加"_dev"(在你的情况下,将"Dnipro- Chatbot_dev"),然后单击取消链接我的帐户.
此外,我问他们是否可以通过编程方式执行此操作(而不仅仅是手动执行),我得到了以下答案:
我不确定在Python中是否可以这样做,但您可以尝试以下操作:如果您可以从您的oauth令牌交换端点发回401状态代码.401将告知AoG访问令牌无效并强制AoG再次启动帐户链接流程.希望这可以帮到你.
总之,您可以使用上面的链接取消帐户链接,因为我测试它,它工作正常.关于第二个答案,我不确定这是否完全可能,至少在说明的方式.您无法以编程方式从Auth0发送401状态代码.您可以在Auth0上执行的操作是将Auth0应用程序的JWT的到期时间设置得非常低(例如60秒),并以此方式强制撤销访问令牌.但这不是一个真正的程序化解决方案,我还没有测试过.
| 归档时间: |
|
| 查看次数: |
631 次 |
| 最近记录: |