Google api 使用Google API PHP客户端的替代方案
我已经使用GoogleJSAPI和GooglePHPAPI的组合为我的网站建立了GoogleConnect 整个PHP API由16MB+的PHP文件组成,极大地降低了本地开发环境的速度。我想删除所有这些膨胀,只使用JSAPI,用AJAX将检索到的值发送到PHP。这可能吗 我当前的工作代码看起来是这样的,但我想重构代码,使其完全不使用PHPAPI jQuery PHP 基本上,我需要将PHP代码的OAuth2部分传输到JavaScript中,然后将检索到的Google用户数据发送到PHP,而不需要PHP APIGoogle api 使用Google API PHP客户端的替代方案,google-api,google-oauth,google-api-php-client,google-api-js-client,Google Api,Google Oauth,Google Api Php Client,Google Api Js Client,我已经使用GoogleJSAPI和GooglePHPAPI的组合为我的网站建立了GoogleConnect 整个PHP API由16MB+的PHP文件组成,极大地降低了本地开发环境的速度。我想删除所有这些膨胀,只使用JSAPI,用AJAX将检索到的值发送到PHP。这可能吗 我当前的工作代码看起来是这样的,但我想重构代码,使其完全不使用PHPAPI jQuery PHP 基本上,我需要将PHP代码的OAuth2部分传输到JavaScript中,然后将检索到的Google用户数据发送到PHP,而不需
这可以做到吗?这是一种有效且安全的方式吗?是的,它是有效且安全的 通常,您的用例决定OAuth最好在客户端还是服务器上完成 如果您的用例适合基于服务器的OAuth,并且库大小是一个问题,那么不要使用库。通过直接调用两个端点来实现OAuth非常容易。另一方面,如果您的用例在客户机上运行良好,那么继续执行客户机OAuth。如果您使用https传输用户数据,那么就没有安全隐患
请注意,客户端OAuth的最大限制是无法请求刷新令牌。这意味着授权只有在用户在场时才有效,因此,如果用户处于脱机状态,您的服务器将无法代表用户执行工作。您是否可以更新您的答案以包含上述两个端点,或者包含指向我正确方向的链接?我已经在谷歌上搜索过了,但还没找到我要找的东西。看看这里的假人指南
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);
}
}
});
});
});
/**
* 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);
}
}