2016-05-02 11 views
9

Postępuję zgodnie z instrukcją z innego wątku. Simple example of popup. Problem polega na tym, że nie działa na mojej aplikacji Laravel. Nie mam wystarczającej wiedzy na temat plików cookie i nie jestem pewien, co zrobić z $('#UserInfo').text($.cookie("some_cookie")); w kodzie.Laravel socialite popup

Dokonałem logowania na facebooku do wyskakującego okienka. Problem polega na tym, że kiedy I zostało pomyślnie zalogowane, to nie zamknie popup zamiast tego, załaduje ścieżkę przekierowania do niego.

Chcę zamknąć okno wyskakujące po pomyślnym zalogowaniu, a następnie załadować następną trasę do rodzica.

<input id="btn-facebook" type="button" value="Connect with Facebook" /> 
<script src="{{ asset('js/jquery.cookie.js') }}"></script> 
<script> 
    var signinWin; 
    $('#btn-facebook').click(function() { 
     // var pos = screenCenterPos(800, 500); 
      signinWin = window.open("{!!URL::to('facebook')!!}", "SignIn", "width=780,height=410,toolbar=0,scrollbars=0,status=0,resizable=0,location=0,menuBar=0,left=" + 500 + ",top=" + 200); 
      setTimeout(CheckLoginStatus, 2000); 
      signinWin.focus(); 
      return false; 
     }); 

    function CheckLoginStatus() { 
     if (signinWin.closed) { 
      $('#UserInfo').text($.cookie("some_cookie")); 
     } 
     else setTimeout(CheckLoginStatus, 1000); 
    } 

</script> 
+0

przechowywać zabezpieczony url w sesji> połączyć z OAuth w popup, Uwierzytelnianie powodzeniem> ciasteczko zostanie zaktualizowany na swojej stronie jako uwierzytelniony prostu zamknąć okienko , przekieruj do chronionego adresu URL z magazynu sesji. –

+0

Przez zamknięcie popup mam na myśli Możesz zawsze kontrolować wyskakujące okienka potomne od rodzica, napisać mały kod js, aby to zrobić –

+0

Którą wersję Laravel używasz? –

Odpowiedz

7

Po pomyślnym uwierzytelnieniu się z Facebook API. Facebook przekieruje cię do ścieżki ustawionej dla przekierowania (zachowanie domyślne).

Ta ścieżka jest taka sama, jak w panelu kontrolnym interfejsu API Facebook dla aplikacji. Po przekierowaniu na skonfigurowaną ścieżkę z Facebooka, od tego momentu musisz zarządzać swoimi sesjami, ciasteczkami itp.

Daj nam znać, czy to ci pomogło, czy nie.

2

Laravel wspiera integrację społeczną i ma oficjalne pakiety. Socialite for Laravel

Ma świetną dokumentację i doskonałą próbkę kodu.

Dla twojego problemu. Spróbuję wyjaśnić, co robi twój kod:

Pierwsza. Masz kod, który otwiera się w nowym oknie

signinWin = window.open("{!!URL::to('facebook')!!}", "SignIn", "width=780,height=410,toolbar=0,scrollbars=0,status=0,resizable=0,location=0,menuBar=0,left=" + 500 + ",top=" + 200); 

i kod, który sprawdza, czy okno jest zamknięte

if (signinWin.closed) { 

Ten kod $('#UserInfo').text($.cookie("some_cookie")); tylko ustawić wartość tekstu elementu z ID „userinfo”. To nic nie da.

Aby zamknąć okno należy dodać:

signinWin.close() 

do kodu. Lub kod po prostu otworzyć okno w tym samym oknie poprzez ustawienie:

window.open("{!!URL::to('facebook')!!}", "_self", "width=780,height=410,toolbar=0,scrollbars=0,status=0,resizable=0,location=0,menuBar=0,left=" + 500 + ",top=" + 200);