Php 使用不同客户端ID的Google身份验证';s

Php 使用不同客户端ID的Google身份验证';s,php,google-oauth,google-api-php-client,google-authentication,Php,Google Oauth,Google Api Php Client,Google Authentication,我想使用Google Authentication Oauth 2验证用户是否可以使用Google在我服务器上的库中提供的代码访问多个域。我下载并安装了谷歌提供的代码,一切正常,直到我更改了客户端Id和客户端密码,以使用我在开发者控制台中设置的另一个项目 基本上,我正在尝试使用Google_Client.php及其依赖代码作为共享代码库,对许多不同的项目进行身份验证,但看起来config.php文件始终优先,即使我在每个脚本上为每个项目设置了客户机id和密码 以下是config.php文件的一部

我想使用Google Authentication Oauth 2验证用户是否可以使用Google在我服务器上的库中提供的代码访问多个域。我下载并安装了谷歌提供的代码,一切正常,直到我更改了客户端Id和客户端密码,以使用我在开发者控制台中设置的另一个项目

基本上,我正在尝试使用Google_Client.php及其依赖代码作为共享代码库,对许多不同的项目进行身份验证,但看起来config.php文件始终优先,即使我在每个脚本上为每个项目设置了客户机id和密码

以下是config.php文件的一部分:

global $apiConfig;
$apiConfig = array(
  'use_objects' => false,
  'application_name' => 'My Name',
  'oauth2_client_id' => 'MY CLIENT ID HERE',
  'oauth2_client_secret' => 'MY SECRET HERE',
  'oauth2_redirect_uri' => 'MY REDIRECT HERE'
);
在Google_Client.php文件中,存在这些函数

public function setClientId($clientId) {
  global $apiConfig;
  $apiConfig['oauth2_client_id'] = $clientId;
  self::$auth->clientId = $clientId;
}

public function setClientSecret($clientSecret) {
  global $apiConfig;
  $apiConfig['oauth2_client_secret'] = $clientSecret;
  self::$auth->clientSecret = $clientSecret;
}
我从每个域下的脚本调用这些函数,传递不同的客户端Id和密码,如下所示:

require_once 'PATH_TO_LIBRARY/Google_Client.php';

$client = new Google_Client();
$client->setApplicationName("MY NAME");
$client->setClientId('MY CLIENT ID');
$client->setClientSecret('MY SECRET');
$client->setRedirectUri('MY REDIRECT');
如果我的脚本中的客户机ID和SECRET与config.php文件中的相同,则一切正常。一个解决方案是注释掉全局$apiConfig;Google_Client.php文件中的setClientId和setClientSecret函数中的行,但这不是很优雅。我真的不想在我的服务器上运行的每个域上都有Google_Client.php和它附带的其他代码的副本,而是希望在我想要使用Google身份验证的所有域之间共享代码

有没有更好的方法来实现我的目标


干杯

你为什么说“看起来config.php文件总是优先”?我还没有使用过这个版本的库,但是看看代码,似乎您可以将config.php保留为空值,然后使用set*函数设置值,这将覆盖$apiConfig。当你这样做的时候,你会犯什么错误?PS:有一个新版本的库,你什么意思它不工作?@DalmTo,当我说它不工作时,意味着当我使用不同的客户机ID和客户机机密参数时,它仍然使用config.php文件中设置的参数,而不是我在代码中定义的参数。