Gmail API如何使用PHP进行身份验证以访问自己的数据?

时间:2017-09-04 02:33:17

标签: google-oauth gmail-api

我只想访问自己的Gmail帐户并检索10条最新消息。我很难进行身份验证,所以我甚至可以尝试这个。

我按照此处的说明操作:https://developers.google.com/gmail/api/quickstart/php

一切似乎都有效,但现在怎样了?文档很难遵循。 API调用使用API​​ Explorer工作,但我应该如何在PHP中访问oAuth令牌?

Google提供以下exaple功能:

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;
}

如何获得$service?我假设它指的是存储在client_secrets.json中的密钥,但我不确定如何访问。

我知道这是一个基本的问题(谷歌没有解释它的基本问题),但我确信我不是唯一一个与此斗争的人。

谢谢!

1 个答案:

答案 0 :(得分:0)

你是一个共同的陷阱 - 22 - 我们都在那里。

您希望使用Google API xxx(在您的情况下为gmail),因此您需要阅读有关Gmail API的文档。他们提到OAuth的传递参考以及链接,但是那里有一个信息消息,所以你浏览它然后回到Gmail文档,希望能够复制/粘贴一些示例代码。

不幸的是,您可能不得不回到OAuth文档并花几个小时阅读。您知道何时理解它,因为您将能够向自己解释身份验证和授权之间的区别。主要的困难是大多数示例代码和解释都与用户有很多用户的用例有关,每个用户都希望使用您的应用程序安全地访问自己的电子邮件。单个用户想要访问他自己的电子邮件的用例是边缘情况,因此没有很好地解释。这篇文章可能对How do I authorise an app (web or installed) without user intervention? (canonical ?)有帮助。我是为GDrive编写的,但它也可能适用于Gmail。