PHP -Список сообщений с помощью API OAuth2 Google Gmail


Я создаю почтовый клиент на основе Интернета, который поддерживает учетные записи Google с помощью API Google OAuth2, логин работает нормально, и разрешения для Gmail запрашиваются при первом входе в систему, но я не понимаю, как получать почту из учетной записи пользователя. Согласно Документации по API Google Gmail, я создаю класс для использования этих 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"]);

Но я думаю, что это неправильный метод.. Что я должен передать функции? Спасибо.

Редактировать: Я уже включил PHP-клиент Google Api в свой проект.

Редактировать: Решено, смотрите решение здесь

Author: Community, 2016-02-09

1 answers

Решено, я забыл настроить и вызвать $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;
    }
 1
Author: Mirko Brombin, 2016-02-09 13:37:02