用Django实现Facebook登录



嗨,如果有人能在这里粘贴为他们的Django项目创建的Facebook登录代码,我将不胜感激,无论它是否是一个单独的应用程序,并提供一些解释。正在提取用户名、电子邮件和个人资料图片。谢谢

我花了一周的时间,但我很难实现Facebook登录。如果你不想在你的网站上使用第三方应用程序(对用户来说更安全、更值得信赖),以下是步骤:

  1. 在此处获取FB登录按钮:(https://developers.facebook.com/docs/facebook-login/web/login-button)。您可以在复制代码之前更改按钮的设置。

  2. 在此处获取javascript插件(https://developers.facebook.com/docs/facebook-login/web)。我建议复制示例并修改以下内容:

Javascript:

if (response.status === 'connected') {
// Logged into your app and Facebook.
FB.api('/me', {fields: 'name, email'}, function(response) {
console.log('Successful login for: ' + response.name);
document.getElementById("your_name2").value = response.name;
document.getElementById("your_email").value = response.email;
document.getElementById("myForm").submit();
document.getElementById('status').innerHTML =
'Thanks for logging in, ' + response.name + response.email + '!';});

登录并"连接"后,您需要更改您呼叫的信息。添加上面所需的{fields...}。记录日志,看看它是否正常工作。

  1. 将2拉入的信息提交到隐藏表单中,以便将其发送到视图和模型。以下是表单(hells只是默认值):

表单模板:

<form action="{% url 'facebooklogin:register' %}" method="post" style="display: none;" id="myForm">
{% csrf_token %}
<label for="your_name">Your name: </label>
<input id="your_name2" type="text" name="your_name" value="helllllls">
<input id="your_email" type="text" name="your_email" value="helllllls">
<input type="submit" value="OK">
</form>
  1. 设置您的窗体、模型和视图,以便根据需要处理信息。获取个人资料图片,但只需在表单中添加一个ImageField即可

URL:

url(r'^registerfb/$', views.get_name, name='register')

视图:

def get_name(request):
# if this is a POST request we need to process the form data
if request.method == 'POST':
# create a form instance and populate it with data from the request:
form = NameForm(request.POST)
# check whether it's valid:
if form.is_valid():
# process the data in form.cleaned_data as required
logger.error('Form is valid and running')
logger.error(request.POST.get('your_name'))
logger.error(request.POST.get('your_email'))
# redirect to a new URL:
return HttpResponseRedirect('/thanks/')
# if a GET (or any other method) we'll create a blank form
else:
form = NameForm()
return render(request, 'facebooklogin/name.html', {'form': form})

形式:

class NameForm(ModelForm):
class Meta:
model = FBUser
fields = ['your_name', 'your_email',]

最新更新