2015-06-02 10 views
15

Sono tuttavia nuovo a Laravel e sto seguendo il tutorial su http://www.codeanchor.net/blog/complete-laravel-socialite-tutorial/, per accedere a un utente tramite Facebook nella mia applicazione. Tuttavia, quasi ovunque trovo un tutorial che utilizza Github o Twitter per il plug-in Socialite fornito in Laravel.Utilizzo di Laravel Socialite per accedere a facebook

mio problema è che a seguire tutto ciò che nel tutorial, come clicco sul pulsante "Login a Facebook", viene generata una "eccezione Argomento non valido" con Nessun driver Socialite è stato specificato. ".

Un'altra pila domanda di overflow sembrava restringere le cose:. https://stackoverflow.com/questions/29673898/laravel-socialite-invalidargumentexception-in-socialitemanager-php-line-138-n

affermando che il problema è nella config/services.php

Ora, ho l'APP_ID e app_secret Tuttavia, il link di reindirizzamento sembra essere fuorviante in quanto ho non riesco a trovarlo su Facebook. Sono consapevole che questo s è dove la mia app dovrebbe andare su Facebook per il login, tuttavia, non è sicuro di cosa dovrebbe essere.

Qualcuno ha qualche idea su questo.

risposta

38

Nella tua composer.json add "laravel/socialite": "~2.0",

"require": { 
     "laravel/framework": "5.0.*", 
     "laravel/socialite": "~2.0", 

fuga composer update

In config/services.php aggiuntivo:

//Socialite 
    'facebook' => [ 
     'client_id'  => '1234567890444', 
     'client_secret' => '1aa2af333336fffvvvffffvff', 
     'redirect'  => 'http://laravel.dev/login/callback/facebook', 
    ], 

È necessario creare due percorsi, le mie sono così:

//Social Login 
Route::get('/login/{provider?}',[ 
    'uses' => '[email protected]', 
    'as' => 'auth.getSocialAuth' 
]); 


Route::get('/login/callback/{provider?}',[ 
    'uses' => '[email protected]', 
    'as' => 'auth.getSocialAuthCallback' 
]); 

È inoltre necessario creare controller per le vie di cui sopra in questo modo:

<?php namespace App\Http\Controllers; 

use Laravel\Socialite\Contracts\Factory as Socialite; 

class AuthController extends Controller 
{ 

     public function __construct(Socialite $socialite){ 
      $this->socialite = $socialite; 
     } 


     public function getSocialAuth($provider=null) 
     { 
      if(!config("services.$provider")) abort('404'); //just to handle providers that doesn't exist 

      return $this->socialite->with($provider)->redirect(); 
     } 


     public function getSocialAuthCallback($provider=null) 
     { 
      if($user = $this->socialite->with($provider)->user()){ 
      dd($user); 
      }else{ 
      return 'something went wrong'; 
      } 
     } 

} 

e, infine, aggiungere l'URL del sito al tuo Facebook App in questo modo:

enter image description here

+0

come creare Facebook come fornitore per ottenere il client_id e cilent_secret? – yudijohn

+1

@yudijohn, riguardo alla tua domanda, dovresti creare un'applicazione in Facebook. Ad ogni modo, è qualcosa che devi pubblicare come nuova domanda. – whoan

+0

Puoi spiegare cosa fa il secondo percorso se hai già un reindirizzamento in 'config/services'? –

0

Creare un provider sotto il file

'facebook' => [ 
    'client_id' => 'your-fb-client-id', 
    'client_secret' => 'your-fb-secret', 
    'redirect' => 'http://your-redirect.com/route', 
], 

ora config/services.php si ca n creare un controller con seguente codice

//this function will redirect users to facebook login page 
public function facebook() 
{ 
    return \Socialize::with('facebook')->redirect(); 
} 

public function callback() 
{ 
    $user = \Socialize::with('facebook')->user(); 

    //now we have user details in the $user array 
    dd($user); 

} 

e questo è il percorso

Route::get('facebook', '[email protected]'); 

Route::get('callback', '[email protected]'); 
+0

come creare Facebook come provider per ottenere client_id e cilent_secret? – yudijohn

+0

@yudijohn è necessario farlo qui https://developers.facebook.com/ – CrsCaballero

Problemi correlati