Php 连接Google服务API以检索最终用户的邮件时出错

Php 连接Google服务API以检索最终用户的邮件时出错,php,google-api,gmail,gmail-api,Php,Google Api,Gmail,Gmail Api,我已经遵循了Google文档中关于如何将Google服务API与PHP函数结合使用的一些步骤 到目前为止,我已经包括了库,甚至还有密钥。最后我到达了最后一步,但它要求我登录。确切地说,我想在不要求登录的情况下检索我自己的邮件,因为我已经有了自己的密码和gmail帐户 我的代码有什么问题?你能告诉我吗 public function retrieving_message() { $client_id = '10521XXXX456-XXXXX.apps.

我已经遵循了Google文档中关于如何将Google服务API与PHP函数结合使用的一些步骤

到目前为止,我已经包括了库,甚至还有密钥。最后我到达了最后一步,但它要求我登录。确切地说,我想在不要求登录的情况下检索我自己的邮件,因为我已经有了自己的密码和gmail帐户

我的代码有什么问题?你能告诉我吗

 public function retrieving_message()
        {
            $client_id  = '10521XXXX456-XXXXX.apps.googleusercontent.com'; //Client ID
            $client_email = '1XXXXX56244-XXXX@developer.gserviceaccount.com'; //Email Address
            $key_file_location = 'API Project-0f1afd2a0615.p12'; //key.p12
            $this->load->library('google');
            $client = new Google_Client();

            // Replace this with your application name.
            $client->setApplicationName("API Project");
            // Replace this with the service you are using.

            // We only need permissions to compose and send emails
            // $client->addScope("https://www.googleapis.com/auth/gmail.readonly");
            $service = new Google_Service_Gmail($client);

            $this->listMessages($service, 'hXXtpluXXXX.cam@gmail.com');

        }
获取消息的代码:

function listMessages($service, $userId) {
      $pageToken = NULL;
      $messages = array();
      $opt_param = array();
      do {
        try {
          if ($pageToken) {
            $opt_param['pageToken'] = $pageToken;
          }
          $messagesResponse = $service->users_messages->listUsersMessages($userId, $opt_param);
          if ($messagesResponse->getMessages()) {
            $messages = array_merge($messages, $messagesResponse->getMessages());
            $pageToken = $messagesResponse->getNextPageToken();
          }
        } catch (Exception $e) {
          print 'An error occurred: ' . $e->getMessage();
        }
      } while ($pageToken);

      foreach ($messages as $message) {
        print 'Message with ID: ' . $message->getId() . '<br/>';
      }

      return $messages;
    }
此代码将帮助您:

$client->setApplicationName('API Project');
        $client->setScopes(implode(' ', array(Google_Service_Gmail::GMAIL_READONLY)));

        $client->setAuthConfigFile('key/client_secret.json');


        $client->setAccessType('offline');

您必须生成新的json文件,但不选择web或服务,请检查已安装。

对于服务帐户,您是否对您的服务帐户进行了域范围的委派?developers.google.com/identity/protocols/OAuth2ServiceAccount。当您未授权您的服务帐户访问数据时,会发生此错误。检查以下链接code.google.com/p/google-api-php-client/source/browse/trunk/…了解服务帐户中的php代码示例。检查此链接
$client->setApplicationName('API Project');
        $client->setScopes(implode(' ', array(Google_Service_Gmail::GMAIL_READONLY)));

        $client->setAuthConfigFile('key/client_secret.json');


        $client->setAccessType('offline');