我在添加"登录Facebook"时遇到问题我的Flask应用程序的功能已经使用Flask-Security进行用户身份验证。我真正想要的是除了登录表单之外的Facebook按钮,因此可以使用Facebook而不是邮件/密码。
我曾试图通过Facebook社交网站做到这一点,但失败了,我真的不懂文档。在我看来,用户必须在将帐户连接到Facebook之前进行注册,这不是我想要的方式。
那里有没有人完成了这项工作?在我看来,这将是一个常见的情况,但我在谷歌搜索时找不到任何有用的东西。
答案 0 :(得分:2)
我做过类似的事情,虽然使用我们自己的SSO而不是Facebook,但原则是相同的。在我们的例子中,我们使用CAS,因此@login_required重定向到我们的CAS登录。成功登录后,我使用CAS用户名属性动态添加用户,然后通过Flask-Security登录。请注意,我的示例根据https://pythonhosted.org/Flask-Security/quickstart.html
对您的设置进行了假设def add_user(username):
if not user_datastore.find_user(username=username):
user_datastore.create_user(**get_user_data(username))
user_datastore.commit()
db.session.commit()
def get_user_data(username):
<Return dict mapping Facebook data to your user model>
def set_current_login(username):
try:
add_user(username)
security.current_user = user_datastore.find_user(username=username)
except Exception as e:
print str(e)
return False
return True
@app.route('/')
@login_required
def index():
set_current_login(<facebook username var>)
请注意,您也可以使用flask_security.utils.login_user()例程而不是设置current_user对象,该对象还将设置Flask-Security会话cookie。
上的API文档