使用不同客户ID的Google身份验证

时间:2014-03-17 02:48:36

标签: php google-oauth google-api-php-client google-authentication

我想使用Google身份验证Oauth 2验证用户使用Google在我服务器上的库中提供的代码访问多个域。我下载并安装了Google提供的代码,一切正常,直到我更改客户端ID和客户端密钥以使用我在开发人员控制台中设置的其他项目。

基本上我要做的是使用Google_Client.php及其相关代码作为共享代码库来对许多不同的项目进行身份验证,但即使我设置了客户端ID,它看起来总是优先于config.php文件我的每个剧本上每个项目的秘密和秘密。

这是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');

如果我的脚本中的CLIENT ID和SECRET与config.php文件中的相同,则一切正常。一个解决方案是评论全球$ apiConfig; setClientId和setClientSecret函数在Google_Client.php文件中的行,但这不是很优雅。我真的不想拥有Google_Client.php的副本以及我在服务器上运行的每个域附带的其余代码,而是在我想要使用Google身份验证的所有域之间共享代码。

有没有更好的方法来实现我想要做的事情?

干杯

0 个答案:

没有答案