2015-03-20 17 views
17

Voglio creare un'app con laravel 5 & API dropbox in cui voglio che l'API allow/cancel-warning venga visualizzata quando atterri sulla home page, non quando fai clic su un pulsante. Ho provato diversi metodi ma non ho potuto farlo funzionare.Laravel 5: reindirizzamento a un collegamento esterno all'esterno di 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); 
     } 

    } 

Il link in $ url esiste ed è valido.

Questi (ultimi 3 metodi commentati) sono i metodi che ho provato, incluso il reindirizzamento del reso ($ url), è possibile farlo o sto sprecando il mio tempo con questo? Per favore aiutatemi.

+0

Quando si dice "non ho potuto farlo funzionare," ciò che è accaduto in particolare (per ciascuna delle cose che provato)? Da una rapida occhiata ai documenti di Laravel, penso che 'return redirect() -> away ($ url);' dovrebbe avere ragione. Hai provato? – smarx

+0

(Forse 'Redirect :: away ($ url)' è la stessa cosa ... cosa succede realmente quando lo provi?) – smarx

+0

Oh, forse ti manca un 'return' in' start() '? Dovrebbe probabilmente essere 'return $ this-> checkSession();'. – smarx

risposta

33

Questo codice funziona per me:

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

Assicurarsi di aggiungere anche un ritorno (vale a dire return $this->checkSession();) in start().

3

Di seguito il codice funzionerà

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

e questo sarà anche il lavoro.

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

Sto cercando di ottenere la stessa cosa con WSO2 come IdP e il mio Application Server che è il fornitore di servizi basato su Ubuntu. Sto usando mod_auth_mellon con Laravel e continuo a ricevere 500 errori del server. Avevo pensato che questi suggerimenti funzionassero per me, ma non sembra. Così frustrante. – Maximum86

0

per HTTPS e come utilizzare i seguenti

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