2015-03-20 10 views
17

Chcę zbudować aplikację z interfejsem API dropbox 5 &, w której chcę, aby zezwolenie na API/ostrzeżenie o anulowaniu było wyświetlane po przejściu na stronę główną, a nie po kliknięciu przycisku. Próbowałem różnych metod, ale nie mogłem tego zrobić.Laravel 5: przekierowanie do zewnętrznego linku spoza localhost/server

public function start(){ 
     session(['user_id'=>1]); 
     $dKey = 'key'; 
     $dSecret = 'secret'; 
     $appName = 'app'; 

     $appInfo = new Dropbox\AppInfo($dKey,$dSecret); 

     //store csrf token 
     $tokenStore = new Dropbox\ArrayEntryStore($_SESSION,'dropbox-auth-csrf-token'); 
     //define auth details 
     $this->webAuth = new Dropbox\WebAuth($appInfo,$appName,'http://localhost:8000/dropbox/finish',$tokenStore); 
     $this->checkSession(); 
    } 

    public function checkSession(){ 
     $users = User::where('id','=',session('user_id'))->get(); 

     if(isset($user[0]->dropbox_token)){ 

     } 
     else{ 
      $url = $this->webAuth->start(); 

      //return Redirect::to($url); 
      //return Redirect::away($url); 
      //header('Location : '.$url); 
     } 

    } 

Link w $ url istnieje i jest ważny.

Te (ostatnio 3 skomentowane metody) to metody, które próbowałem, w tym przekierowanie powrotne ($ url), czy można to zrobić, czy też marnuję swój czas? Proszę, pomóż mi.

+0

Kiedy mówisz „Nie mogłem zrobić to praca”, co konkretnie się (dla każdego z tych rzeczy, które próbowałem)? Od pobieżnego spojrzenia na dokumentację Laravel, myślę, że 'return redirect() -> away ($ url);' powinien mieć rację. Czy próbowałeś tego? – smarx

+0

(Być może "Redirect :: away ($ url)" to to samo ... co tak naprawdę się dzieje, gdy próbujesz tego?) – smarx

+0

A może brakuje Ci 'return' w' start() '? Prawdopodobnie powinno to być 'return $ this-> checkSession();'. – smarx

Odpowiedz

33

Ten kod działa dla mnie:

return redirect()->away('https://www.dropbox.com'); 

Upewnij się również dodać zwrotu (tj return $this->checkSession();) w start().

3

poniższy kod zadziała

return redirect()->away('http://www.paypal.com'); 

A to będzie działać.

return redirect('http://www.paypal.com'); 
+0

Próbuję osiągnąć to samo z WSO2 jako IdP i moim serwerem aplikacji, który jest dostawcą usług Ubuntu. Używam mod_auth_mellon z Laravel i ciągle otrzymuję błąd 500 serwera. Pomyślałem, że te sugestie zadziałają, ale to nie wygląda na to. Bardzo frustrujące. – Maximum86

0

HTTPS i takiego zastosowania następujących

return redirect()->to($refererUrl);