Используйте php-функцию simplexml_load_file для загрузки канала Gmail

Мне нужно подключить свой php-скрипт к каналу Gmail Atom, чтобы получить количество непрочитанных сообщений, но у меня проблема с получением файла канала xml:

if($xmlGmailFeed = simplexml_load_file("https://USERNAME:[email protected]/gmail/feed/atom/")) 
    $unreadMessages = $xmlGmailFeed->fullcount;

дает: не удалось загрузить внешний объект, но что я могу сделать? спасибо :)

ошибка! не удалось открыть поток: HTTP-запрос не выполнен! HTTP / 1.0 401 Неавторизованный


person frx08    schedule 11.03.2010    source источник


Ответы (3)


Да, похоже на ошибку аутентификации. Я считаю, что вам нужно аутентифицироваться с помощью curl, поскольку simplexml_load_file недостаточно. Взгляните на класс GmAtom. Это поможет или, по крайней мере, укажет вам правильное направление.

person tdolsen    schedule 11.03.2010

Попробуйте использовать:

https://USERNAME:[email protected]/mail/feed/atom/
person jmans    schedule 11.03.2010

сначала попробуйте выполнить file_get_contents, чтобы убедиться, что канал в порядке и у вас есть allow_url_fopen включен. Затем вы можете попытаться сохранить его во временном файле и передать этот путь в simplexml_load_file.

Если все вышеперечисленное работает и у вас установлен php ‹5.1.0, вы можете попробовать сделать

simplexml_load_file(rawurlencode("https://USERNAME:[email protected]/gmail/feed/atom/"))

Начиная с PHP 5.1.0 вам не нужно этого делать, потому что PHP сделает это за вас.

person Gabriel Solomon    schedule 11.03.2010
comment
Пользуюсь php 5.3.0, думаю, проблема с авторизацией - person frx08; 11.03.2010