Integracja Facebook SDK dla JavaScript do aplikacji internetowej Pythona Flask. Chcę uzyskać możliwość dostępu do zalogowanego użytkownika Facebooka użytkownika ID serwera serwera.

Moim obecnym podejściem jest zbudowanie formularza zawierającego ukryte wejście, które przechowuje identyfikator i prześlij go, gdy użytkownik loguje się:

<script>
  function sendToBackEnd(){
    FB.getLoginStatus(function(response){
      if (response.status == 'connected'){
        $form = $('<form>', {'action': '/process_form', 'method': 'POST'}).appendTO('body');
        FB.api('/me', function(response){
          $('<input>', {'class': 'hidden', 'name': 'FB_id', 'value': response.id}).appendTo($form);
        });
      }
    });
  }
</script>

<div class="fb-login-button" onlogin="sendToBackEnd"></div>

Następnie przechowuj ten identyfikator w kolbie {X0}} Obiekt:

@app.route('/process', methods=['GET', 'POST'])
def process():
    session['FB_id'] = request.form['FB_id']
    print("User's Facebook id now accessible across all routes server-side!")
    return redirect(url_for('index'))

Czy jest tutaj lepsze podejście lub składa ukrytą formę jedynego sposobu przekazywania tych danych z klienta do serwera?

Tylko myśl ... zauważyłem, że jest parametr w FB .It () <) metoda zwana cookie, która jest opisana jako, "InidCates, czy plik cookie jest tworzony dla sesji. Jeśli jest włączony, może być dostępny przez kod serwera." Jestem prawie pewien, że obiekt sesji kolby nie może być zmodyfikowana po stronie klienta (słusznie), ale może to oddzielne pliki cookie można ocenić serwera w moim kodzie Python?

0
Johnny Metz 16 październik 2017, 08:28

2 odpowiedzi

Najlepsza odpowiedź

Postanowiłem użyć żądania otrzymania lub pocztowej do aplikacji kolby po zalogowaniu / wylogowaniu. Tworzenie formy było całkowicie niepotrzebne i zbyt skomplikowane.

0
Johnny Metz 1 listopad 2017, 15:37

Można ustawić użytkownika FB_ID jako plik cookie sesji i uzyskać dostęp do serwera. Można to zrobić za fb_id = request.cookies.get('COOKIE_NAME')

0
Rishabh Srivastava 16 październik 2017, 05:44