2015-06-02 29 views
15

Tôi mới sử dụng Laravel và tôi đang làm theo hướng dẫn trên http://www.codeanchor.net/blog/complete-laravel-socialite-tutorial/, để đăng nhập người dùng thông qua Facebook vào ứng dụng của tôi. Tuy nhiên, hầu như ở khắp mọi nơi tôi tìm thấy một hướng dẫn sử dụng hoặc Github hoặc Twitter cho Plugin Socialite được cung cấp trong Laravel.Sử dụng Laravel Socialite để đăng nhập vào facebook

Vấn đề của tôi là về sau tất cả mọi thứ trong hướng dẫn, như tôi click vào "Đăng nhập vào Facebook" nút, nó ném một "ngoại lệ Đối số không hợp lệ" với Không lái xe Socialite đã được chỉ định. ".

ngăn xếp khác câu hỏi tràn dường như thu hẹp điều xuống:. https://stackoverflow.com/questions/29673898/laravel-socialite-invalidargumentexception-in-socialitemanager-php-line-138-n

Nói rằng vấn đề là trong config/services.php

Bây giờ, tôi có APP_ID và app_secret Tuy nhiên, liên kết chuyển hướng có vẻ là khó hiểu như tôi không thể tìm thấy nó trên Facebook, tôi biết rằng thi s là nơi ứng dụng của tôi nên truy cập vào Facebook để đăng nhập, tuy nhiên, không chắc chắn về những gì nó nên được.

Có ai có bất kỳ ý tưởng nào về điều này không.

Trả lời

38

Trong composer.json bạn Add- "laravel/socialite": "~2.0",

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

chạy composer update

Trong config/services.php add:

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

Bạn cần phải tạo hai tuyến đường, của tôi giống như sau:

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


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

Bạn cũng cần phải tạo điều khiển cho các tuyến đường trên như sau:

<?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'; 
      } 
     } 

} 

và cuối cùng thêm URL trang web lên Facebook App của bạn như vậy:

enter image description here

+0

cách tạo facebook là nhà cung cấp để có được những client_id và cilent_secret? – yudijohn

+1

@yudijohn, liên quan đến câu hỏi của bạn, bạn nên tạo một ứng dụng trong Facebook. Dù sao, đó là một cái gì đó bạn nên đăng bài như một câu hỏi mới. – whoan

+0

Bạn có thể giải thích tuyến đường thứ hai sẽ làm gì nếu bạn đã có chuyển hướng trong 'config/services'? –

0

Tạo một nhà cung cấp dưới tệp config/services.php của bạn

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

bây giờ bạn ca n tạo một bộ điều khiển với mã sau đây

//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); 

} 

và đây là tuyến đường của bạn

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

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

cách tạo facebook làm nhà cung cấp để lấy client_id và cilent_secret? – yudijohn

+0

@yudijohn bạn cần làm cho nó ở đây https://developers.facebook.com/ – CrsCaballero

Các vấn đề liên quan