【问题标题】:Codeigniter and google api integration failCodeigniter 和 google api 集成失败
【发布时间】:2017-07-22 21:33:44
【问题描述】:

我正在尝试从 codeigniter 调用 google api。我已将 google api php 库解压缩到 codeigniter 根目录的一个名为 assets 的目录中。我使用以下代码创建用户。

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

回溯:

我该如何解决这个问题?

【问题讨论】:

  • 包含 google API 版本 2 的最佳方法是使用 composer。这是最简单和官方的方式。我在我的博客中解释了详细的过程。如果您愿意,可以参考以下链接以了解更多信息。 shareurcodes.com/blog/login%20with%20google%20codeigniter
  • @GeordyJames:我使用作曲家安装并重新尝试。我仍然收到相同的消息

标签: php codeigniter google-api-php-client


【解决方案1】:

我找到了失败的原因。任何人都不太可能遇到此错误,但如果有人对这篇文章感兴趣,会在此处说明原因。原来有一个类 Google_Model 似乎与我选择的模型名称(Google_model)冲突。一旦我将声明重写为

class Google_API_Model extends CI_Model

错误消失了..

【讨论】:

    猜你喜欢
    • 2018-07-29
    • 1970-01-01
    • 2013-01-09
    • 1970-01-01
    • 2020-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-13
    相关资源
    最近更新 更多