Laravel Авторизация в Google с помощью artdarek/oauth-4-laravel
Я использую пакет Artdarek для входа в систему с помощью учетных записей Google, и мне нужно авторизовать пользователя для приложения. Я использую Laravel 4.2
Это код из моей функции
public function loginWithGoogle() {
// get data from input
$code = Input::get( 'code' );
// get google service
$googleService = OAuth::consumer( 'Google' );
// check if code is valid
// if code is provided get user data and sign in
if ( !empty( $code ) ) {
// This was a callback request from google, get the token
$token = $googleService->requestAccessToken( $code );
// Send a request with it
$result = json_decode( $googleService->request( 'https://www.googleapis.com/oauth2/v1/userinfo' ), true );
// Check to see if user already exists
if($user = User::where('email', '=', $result['email'])->first())
{
$user = User::find($user['id']);
Auth::login($user);
// If user isn't activated redirect them
if ($user->deactivated == 0)
{
return View::make('dashboard')->with('user', $user);
}
return Redirect::back()->withErrors(['Sorry You have not been approved', 'Speak to your manager']);
}
else
{
// Create new user waiting for approval
$new_user = new User();
$new_user->email = $result['email'];
$new_user->first_name = $result['given_name'];
$new_user->surname = $result['family_name'];
$new_user->googleID = $result['id'];
$new_user->deactivated = 1;
$new_user->save();
return Redirect::back()->withErrors(['Your account have been created. It is awaiting activation by your manager']);
}
}
// if not ask for permission first
else {
// get googleService authorization
$url = $googleService->getAuthorizationUri();
// return to google login url
return Redirect::to( (string)$url );
}
}
Когда новый пользователь предоставляет разрешение для приложения, я получаю сообщение об ошибке "Не удается перенаправить на пустой URL-адрес"
По какой-то причине мой redirectURL
пуст.
3
Author: Mihai Iorga, 2015-01-26
1 answers
Взглянув на документ, вы обнаружите, что вам нужно установить URL-адрес перенаправления на 2-й аргумент в методе OAuth::consumer.
Https://github.com/artdarek/oauth-4-laravel#usage
Это означает, что вы должны использовать потребителя с 2 аргументами вместо 1 аргумента
$googleService = OAuth::consumer("google","https://mydirectlink");
2
Author: edisonthk, 2015-01-26 12:45:07