Я настроил Google Connect для своего веб-сайта, используя комбинацию Google JS API и Google PHP API.
Весь PHP API состоит из 16 МБ + файлов PHP, что значительно замедляет мою локальную среду разработки. Я хочу удалить все это раздувание и использовать вместо этого только JS API, посылая полученные значения в PHP с помощью AJAX. Это возможно?
Мой текущий рабочий код выглядит следующим образом, но я хочу реорганизовать код, чтобы вообще не использовать PHP API.
JQuery
gapi.load('auth2', function() {
var scopes = [
'https://www.googleapis.com/auth/userinfo.email',
'https://www.googleapis.com/auth/userinfo.profile'
];
// Retrieve the singleton for the GoogleAuth library and set up the client.
gapi.auth2.authorize({
'client_id': 'XXXXXXXXXXXXXXXXXX.apps.googleusercontent.com',
'cookie_policy': 'single_host_origin',
'fetch_basic_profile': false,
'ux_mode': 'popup',
'scope': scopes.join(' '),
'prompt': 'select_account'
},
function(googleResponse) {
if ( googleResponse.error ) {
return;
}
var data = {
'action': 'social_connect_google',
'access_token': googleResponse.access_token
}
$.ajax({
url: ajax_url,
type: 'POST',
data: data,
success: function(response) {
if ( response.success === true ) {
console.log(response);
}
}
});
});
});
PHP
/**
* Connect to Google API and login, signup or link accounts.
*
* @since 1.0.0
*
* @return WP_User|NS_Error
*/
public function connect() {
$client = new Google_Client();
$credentials = json_decode('XXXXXXXXX', true);
$client->setAuthConfig($credentials);
// Set Access Token
$client->setAccessToken($_POST['access_token']);
$oauth2 = new Google_Service_Oauth2($client);
if ( !$oauth2 ) {
return new NS_Error('invalid_access_token', 'The access_token was invalid.');
}
$google_user = $this->get_user($oauth2->userinfo->get());
if ( $this->get_user_by_google_id($google_user) ) {
return $this->login($google_user);
} else if ( $this->get_user_by_google_email($google_user) ) {
return $this->link_accounts($google_user);
} else {
return $this->signup($google_user);
}
}
По сути, мне нужно перенести часть PHP-кода OAuth2 для выполнения в JavaScript, а затем отправить полученные данные пользователя Google в PHP, пропуская необходимость в PHP API.
Можно ли это сделать, и является ли это действительным и безопасным способом решения проблем?