Codeigniter 和 google api 集成失败
Codeigniter and google api integration fail
我正在尝试从 codeigniter 调用 google api。我已经将 google api php 库解压缩到 codeigniter 根目录的名为 asset 的目录中。我使用以下代码创建用户。
require_once 'assets/vendor/autoload.php';
$domain="xxxxxxx.com";
class Google_model extends CI_Model
{
public function __construct()
{
parent::__construct();
}
function Create_User($dir,$Given_Name,$Family_Name,$User_Name,$Password)//create a user
{
global $domain;
$UserInstance = new Google_Service_Directory_User();
$NameInstance = new Google_Service_Directory_UserName();
$NameInstance -> setGivenName($Given_Name);
$NameInstance -> setFamilyName($Family_Name);
$UserInstance -> setName($NameInstance);
$UserInstance -> setHashFunction("MD5");
$UserInstance -> setPrimaryEmail("$User_Name@$domain");
$UserInstance -> setPassword(hash("md5", $Password));
$Create_Error=1;
try
{
$createUserResult = $dir -> users -> insert($UserInstance);
$Create_Error=0;
}
catch (Google_IO_Exception $gioe)
{
$Create_Error=$gioe->getMessage();
}
catch (Google_Service_Exception $gse)
{
$Create_Error=$gse->getMessage();
}
return $Create_Error;
}
function Insert_User($First_Name,$Last_Name,$User_Name,$Password)
{
global $domain;
$Error=0;
$client = new Google_Client();
$client->setAuthConfig('assets/auth/service_account.json');
$client->useApplicationDefaultCredentials();
$client->addScope('https://www.googleapis.com/auth/admin.directory.user');
$email="admin@$domain";
$client->setSubject($email);
$dir = new Google_Service_Directory($client);
$Error=self::Exist_user($dir,$User_Name);
if(!$Error)
{
$Error=self::Create_User($dir,$First_Name,$Last_Name,$User_Name,$Password);
}
return $Error;
}
}
当我使用 Insert_User 例程创建用户时,在
行调用函数 Create_User 后失败
$createUserResult = $dir -> users -> insert($UserInstance);
出现错误严重性:错误
消息:调用未定义的方法 Google_Service_Directory_User::toSimpleObject()
文件名:Service/Resource.php
行号:108
回溯:
我该如何解决这个问题?
找到失败的原因了。不太可能有人会遇到此错误,但如果有人对此感兴趣,请将原因放在这里 post。原来有一个 class Google_Model 似乎与我选择的模型名称 (Google_model) 冲突。一旦我将声明重写为
class Google_API_Model extends CI_Model
错误消失了..
我正在尝试从 codeigniter 调用 google api。我已经将 google api php 库解压缩到 codeigniter 根目录的名为 asset 的目录中。我使用以下代码创建用户。
require_once 'assets/vendor/autoload.php';
$domain="xxxxxxx.com";
class Google_model extends CI_Model
{
public function __construct()
{
parent::__construct();
}
function Create_User($dir,$Given_Name,$Family_Name,$User_Name,$Password)//create a user
{
global $domain;
$UserInstance = new Google_Service_Directory_User();
$NameInstance = new Google_Service_Directory_UserName();
$NameInstance -> setGivenName($Given_Name);
$NameInstance -> setFamilyName($Family_Name);
$UserInstance -> setName($NameInstance);
$UserInstance -> setHashFunction("MD5");
$UserInstance -> setPrimaryEmail("$User_Name@$domain");
$UserInstance -> setPassword(hash("md5", $Password));
$Create_Error=1;
try
{
$createUserResult = $dir -> users -> insert($UserInstance);
$Create_Error=0;
}
catch (Google_IO_Exception $gioe)
{
$Create_Error=$gioe->getMessage();
}
catch (Google_Service_Exception $gse)
{
$Create_Error=$gse->getMessage();
}
return $Create_Error;
}
function Insert_User($First_Name,$Last_Name,$User_Name,$Password)
{
global $domain;
$Error=0;
$client = new Google_Client();
$client->setAuthConfig('assets/auth/service_account.json');
$client->useApplicationDefaultCredentials();
$client->addScope('https://www.googleapis.com/auth/admin.directory.user');
$email="admin@$domain";
$client->setSubject($email);
$dir = new Google_Service_Directory($client);
$Error=self::Exist_user($dir,$User_Name);
if(!$Error)
{
$Error=self::Create_User($dir,$First_Name,$Last_Name,$User_Name,$Password);
}
return $Error;
}
}
当我使用 Insert_User 例程创建用户时,在
行调用函数 Create_User 后失败$createUserResult = $dir -> users -> insert($UserInstance);
出现错误严重性:错误
消息:调用未定义的方法 Google_Service_Directory_User::toSimpleObject()
文件名:Service/Resource.php
行号:108
回溯:
我该如何解决这个问题?
找到失败的原因了。不太可能有人会遇到此错误,但如果有人对此感兴趣,请将原因放在这里 post。原来有一个 class Google_Model 似乎与我选择的模型名称 (Google_model) 冲突。一旦我将声明重写为
class Google_API_Model extends CI_Model
错误消失了..