CakePHP CakeDC плагин пользователей социальный вход
На самом деле я работаю над проектом CakePHP3, и я хочу добавить социальный Логин: Facebook,Google...
Я нашел плагин CakeDC, который делает все эти задачи..
Я правильно установил плагин и настроил его, простой вход работает, но у меня проблемы с Facebook и Google Login..
Я создал проект в приставках Facebook и Google и привел их по следующим ссылкам:
http://projettest.com/auth/facebook
http://projettest.com/auth/google
И я добавил это к моему bootstrap.php
:
Configure::write('OAuth.providers.facebook.options.clientId', '866098280167491');
Configure::write('OAuth.providers.facebook.options.clientSecret', 'secret');
Configure::write('OAuth.providers.google.options.clientId', '772409145076-birdmh5a3t48b8mg9knq0lonup6aeomk.apps.googleusercontent.com');
Configure::write('OAuth.providers.google.options.clientSecret', 'secret');
Когда я пытаюсь войти в систему с обоими из них, я принимаю, чтобы войти с моими учетными записями Facebook и Google, но после этого появляется сообщение:
Вы не авторизованы для доступа к этому местоположению.
И если проверить запрос, я увидел ответ от Google и Facebook, в котором указан параметр кода, например: http://projettest.com/auth/google?state=xxx&code=4/xxx&session_state=xxx&prompt=consent
Это содержание permission.php
:
return [
'Users.SimpleRbac.permissions' => [
[
'role' => '*',
'plugin' => 'CakeDC/Users',
'controller' => '*',
'action' => '*',
],
[
'role' => 'user',
'plugin' => 'CakeDC/Users',
'controller' => 'Users',
'action' => ['register', 'edit', 'view'],
],
[
'role' => 'user',
'plugin' => 'CakeDC/Users',
'controller' => 'Users',
'action' => '*',
'allowed' => true,
],
[
'role' => ['user'],
'controller' => ['Pages'],
'action' => ['other', 'display'],
'allowed' => true,
],
]];
И это содержание users.php
:
$config = [
'Users' => [
//Table used to manage users
'table' => 'CakeDC/Users.Users',
//configure Auth component
'auth' => true,
//Password Hasher
'passwordHasher' => '\Cake\Auth\DefaultPasswordHasher',
//token expiration, 1 hour
'Token' => ['expiration' => 3600],
'Email' => [
//determines if the user should include email
'required' => true,
//determines if registration workflow includes email validation
'validate' => true,
],
'Registration' => [
//determines if the register is enabled
'active' => true,
//determines if the reCaptcha is enabled for registration
'reCaptcha' => true,
],
'Tos' => [
//determines if the user should include tos accepted
'required' => true,
],
'Social' => [
//enable social login
'login' => false,
],
'Profile' => [
//Allow view other users profiles
'viewOthers' => true,
'route' => ['plugin' => 'CakeDC/Users', 'controller' => 'Users', 'action' => 'profile'],
],
'Key' => [
'Session' => [
//session key to store the social auth data
'social' => 'Users.social',
//userId key used in reset password workflow
'resetPasswordUserId' => 'Users.resetPasswordUserId',
],
//form key to store the social auth data
'Form' => [
'social' => 'social'
],
'Data' => [
//data key to store the users email
'email' => 'email',
//data key to store email coming from social networks
'socialEmail' => 'info.email',
//data key to check if the remember me option is enabled
'rememberMe' => 'remember_me',
],
],
//Avatar placeholder
'Avatar' => ['placeholder' => 'CakeDC/Users.avatar_placeholder.png'],
'RememberMe' => [
//configure Remember Me component
'active' => true,
'Cookie' => [
'name' => 'remember_me',
'Config' => [
'expires' => '1 month',
'httpOnly' => true,
]
]
],
],
//default configuration used to auto-load the Auth Component, override to change the way Auth works
'Auth' => [
'loginAction' => [
'plugin' => 'CakeDC/Users',
'controller' => 'Users',
'action' => 'login',
'prefix' => false
],
'authenticate' => [
'all' => [
'scope' => ['active' => 1]
],
'CakeDC/Users.ApiKey',
'CakeDC/Users.RememberMe',
'Form',
],
'authorize' => [
'CakeDC/Users.Superuser',
'CakeDC/Users.SimpleRbac',
],
],
'OAuth' => [
'path' => ['plugin' => 'CakeDC/Users', 'controller' => 'Users', 'action' => 'socialLogin', 'prefix' => false],
'providers' => [
'facebook' => [
'className' => 'League\OAuth2\Client\Provider\Facebook',
'options' => [
'graphApiVersion' => 'v2.5',
'redirectUri' => Router::url('/auth/facebook', true)
]
],
'twitter' => [
'options' => [
'redirectUri' => Router::url('/auth/twitter', true)
]
],
'linkedIn' => [
'className' => 'League\OAuth2\Client\Provider\LinkedIn',
'options' => [
'redirectUri' => Router::url('/auth/linkedIn', true)
]
],
'instagram' => [
'className' => 'League\OAuth2\Client\Provider\Instagram',
'options' => [
'redirectUri' => Router::url('/auth/instagram', true)
]
],
'google' => [
'className' => 'League\OAuth2\Client\Provider\Google',
'options' => [
'userFields' => ['url', 'aboutMe'],
'redirectUri' => Router::url('/auth/google', true)
]
],
],
]
];
return $config;
Пожалуйста, помогите мне.
1 ответ
Если что-то не так с вызовом cURL, функция SocialAuthenticate _authenticate возвращает false и перенаправляет на страницу входа. Проверьте настройки SSL вашего сервера. Проверьте Auth/SocialAuthenticate.php @ line 180: есть исключение, в $e->getMessage() вы найдете ошибку. Проблема: https://github.com/CakeDC/users/issues/348