【问题标题】:PHP - ListMessages with Google Gmail OAuth2 APIPHP - 使用 Google Gmail OAuth2 API 的 ListMessages
【发布时间】:2016-05-19 11:50:01
【问题描述】:

我正在创建一个基于 Web 的邮件客户端,它使用 Google OAuth2 API 支持 Google 帐户,登录工作正常,首次登录时询问 Gmail 的权限,但我不明白如何从用户帐户获取邮件。根据Google Gmail API Documentation,我正在创建一个类来使用这些 API,但我不明白如何使用它..

class Gmail
{
/*
 * Get list of Messages in user's mailbox.
 * @param  Google_Service_Gmail $service Authorized Gmail API instance.
 * @param  string $userId User's email address. The special value 'me'
 * can be used to indicate the authenticated user.
 * @return array Array of Messages.
 */
    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;
    }

    function getMessage($service, $userId, $messageId) {
        try {
            $message = $service->users_messages->get($userId, $messageId);
            print 'Message with ID: ' . $message->getId() . ' retrieved.';
            return $message;
        } catch (Exception $e) {
            print 'An error occurred: ' . $e->getMessage();
        }
    }

}

在我的模板中,我已将类分配给变量 $Gmail 并开始使用:

$gmailMessages = $Gmail->listMessages(GOOGLE_AUTH_API_KEY, $user_inbox["Profile_Email"]);

但我认为这不是正确的方法。我必须将什么传递给函数? 谢谢。

编辑:我已经将Google Api PHP Client 包含到我的项目中。

编辑:已解决,see solution here

【问题讨论】:

    标签: php email gmail-api google-oauth


    【解决方案1】:

    已解决,忘记设置和调用$client,现在我的函数是:

    function listMessages($userId) {
            $client_id = API_CLIENT_ID;
            $client_secret = API_SECRET;
            $redirect_uri = API_REDIRECT_URL;
            $client = new Google_Client();
            $client->setClientId($client_id);
            $client->setClientSecret($client_secret);
            $client->setRedirectUri($redirect_uri);
            $client->addScope("https://mail.google.com/ https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile ");
            $client->setAccessType("offline");
            $service = new Google_Service_Gmail($client);
            $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;
        }
    

    【讨论】:

      猜你喜欢
      • 2016-07-22
      • 2021-10-02
      • 1970-01-01
      • 2018-09-06
      • 1970-01-01
      • 2019-09-19
      • 2014-09-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多