Socialite Google Login показывает, что страница не перенаправляется должным образом

Я пытаюсь настроить вход в Google с помощью социальной сети в Laravel. Но когда я ввожу учетные данные Google, он показывает:

Страница не перенаправляется должным образом

для URL http://127.0.0.1:8000/redirect/google.

Мой файл web.php:

Route::get('/redirect/google', 'SocialAuthController@redirect');
Route::get('/callback/google', 'SocialAuthController@callback');

services.php:

'google' => [
    'client_id' => '-----.apps.googleusercontent.com',
    'client_secret' => '---------',
    'redirect' => 'http://127.0.0.1:8000/callback/google'
],

SocialAuthController.php:

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\SocialAccountService;
use Socialite;

class SocialAuthController extends Controller {
    //
    public function redirect(){
        return Socialite::driver('google')->redirect();
    }

    public function callback(SocialAccountService $service) {
        $user = $service->createOrGetUser(Socialite::driver('google')->user());
        auth()->login($user);
        return redirect()->back();
    }
}

SocialAccount.php:

namespace App;

use Illuminate\Database\Eloquent\Model;

class SocialAccount extends Model {
    //
    protected $fillable = ['user_id', 'provider_user_id', 'provider'];

    public function user() {
        return $this->belongsTo(User::class);
    }
}

Миграция для social_accounts_table

class CreateSocialAccountsTable extends Migration { 
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up() {
        Schema::create('social_accounts', function (Blueprint $table) {
            $table->increments('user_id');
            $table->string('provider_user_id');
            $table->string('provider');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down() {
        Schema::dropIfExists('social_accounts');
    }
}

SocialAccountService.php

namespace App;

use Laravel\Socialite\Contracts\User as ProviderUser;

class SocialAccountService {
    public function createOrGetUser(ProviderUser $providerUser) {
        $account = SocialAccount::whereProvider('google')
            ->whereProviderUserId($providerUser->getId())
            ->first();

        if ($account) {
            return $account->user;
        } else {
            $account = new SocialAccount([
                'provider_user_id' => $providerUser->getId(),
                'provider' => 'google'
            ]);

            $user = User::whereEmail($providerUser->getEmail())->first();

            if (!$user) {
                $user = User::create([
                    'email' => $providerUser->getEmail(),
                    'name' => $providerUser->getName(),
                    'role' => 'user',
                    'password' => '',
                ]);
            }

            $account->user()->associate($user);
            $account->save();
            return $user;
        }

    }
}

person Lakshya Garg    schedule 02.04.2017    source источник
comment
Светская львица не будет работать в местном   -  person Niklesh Raut    schedule 02.04.2017


Ответы (2)


В ваших услугах у вас есть

'redirect' => 'http://127.0.0.1:8000/callback/google'

После аутентификации Google не может получить доступ к вашему домену http://127.0.0.1(localhost). Вам придется попробовать это с производственным URL-адресом

person EddyTheDove    schedule 02.04.2017

Я решил это, проблема заключается в моем вызове redirect()->back() в функции обратного вызова. Мне все еще нужно найти, как перенаправить обратно на исходную страницу, но перенаправление на главную решило эту проблему.

person Lakshya Garg    schedule 06.04.2017