2017-10-11 3 views
1

Salut J'apprécierais vraiment que quelqu'un puisse coller ici du code ici pour qu'il y ait un login Facebook créé pour son projet Django, que ce soit une application séparée ou non, avec quelques explications. Tirer le nom d'utilisateur, l'email et la photo de profil. MerciImplémenter Facebook Se connecter avec Django

+0

Il y a beaucoup de bibliothèques disponibles pour auth sociale dans django. Si vous google, vous trouverez certains sur github –

+1

se référer à ce [lien] (https://simpleisbetterthancomplex.com/tutorial/2016/10/24/how-to-add-social-login-to-django.html) être vous aide –

+0

Merci j'espérais ne pas utiliser l'application tierce. Avez-vous utilisé social-auth-app-django ou django-allAuth vous-même? – Josh

Répondre

1

Il m'a fallu une semaine, mais j'ai mis en place la connexion Facebook à la dure. Si vous ne voulez pas une application 3ème partie sur votre site (plus sûr et digne de confiance pour les utilisateurs), voici les étapes:

  1. Obtenez le bouton de connexion FB ici: (https://developers.facebook.com/docs/facebook-login/web/login-button). Vous pouvez modifier les paramètres du bouton avant de copier le code.

  2. Obtenez le plugin javascript ici (https://developers.facebook.com/docs/facebook-login/web). Je suggère de copier l'exemple et modifier les éléments suivants:

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 + '!';}); 

Une fois connecté et « connecté », vous devez changer les informations que vous appelez. Ajoutez le {fields...} dont vous avez besoin ci-dessus. Gardez le journal pour voir si cela fonctionne.

  1. Soumettez l'information tirée en 2 dans une forme cachée afin de l'envoyer à une vue et un modèle. Voici la forme (hellls juste valeur par défaut):

modèle de formulaire:

<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. Configurez votre formulaire, le modèle et en vue de traiter les informations que vous vouloir. Obtenez l'image du profil, mais en ajoutant simplement un ImageField pour former.

URL:

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

VIEW:

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}) 

FORMULAIRE:

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

J'utilisais le paquet django-social depuis plusieurs mois. Il y a environ deux jours, il a cessé de fonctionner. Après googling et mise à niveau, il ne fonctionne toujours pas. Je vais essayer ça merci, j'espère que ça fonctionne. –

+0

Bien sûr, j'ai peut-être fait quelques mods depuis, mais fonctionne parfaitement. – Josh

+0

Un grand merci Josh –