К содержанию

В плагине запустить на выполнение сниппет

Добрый вечер ребята.
Яндекс разрешил добавлять оригинальные тексты для сайтов с нулевым Тиц.
Ну решил я автоматом значит отправлять тексты в панель вебмастера) Разобрался с авторизацией приложения, с отправкой текстов и уже было обрадовался что все близится к концу, но не тут то было!

Замечательный параметр Callback URI чтоб ему пусто было и временный токен…

Токен выдается только на время — соответственно его нужно не один раз получать, а Callback URI принуждает обращаться только с одной странички.

Подскажите как мне решить эту задачку? Запустить сниппет именно с той странички что прописана как Callback URI?
Или возможно есть другие варианты?

Заранее спасибо за советы!
Володя
Володя
27 октября 2013, 14:04
modx.pro
4 358
Поблагодарить автора Отправить деньги
Реклама

Комментарии: 10

Василий Наумкин
Василий Наумкин Администратор
27 октября 2013, 20:33
Объясни, в чем именно проблема?

Я тексты в Яндекс не отправлял, поэтому мне не понятно.
    Володя
    Володя Эксперт
    27 октября 2013, 20:57
    В двух словах — есть сниппет, получает токен, авторизуется по протоколу OAuth 2.0, при запросе использует Callback URI… дальнейшие действия не суть…
    Создал плагин на какое то событие, берет контент ресурса, отправляет в сниппет, но сниппет получит токен и отправит текст в панель вебмастера — только если будет вызван на странице Callback URI.

    вот с этим и заморочка…

    p.s. по сути вся проблема в получении токена при вызове сниппета из плагина…
      Василий Наумкин
      Василий Наумкин Администратор
      27 октября 2013, 21:09
      Я наверное глупенький, но по-прежнему не вижу проблемы.

      Почему нельзя вызвать сниппет из плагина?
      $modx->runSnippet('mySnippet', $myParams);
        Володя
        Володя Эксперт
        27 октября 2013, 21:15
        нет, это из меня фиговый объясняльщик!
        Чтобы получить разрешение пользователя на выполнение действий с его личными данными, приложение должно перенаправить пользователя по следующему URL:
        https://oauth.yandex.ru/authorize?response_type=<token|pre>&client_id=<client_id>[&display=popup][&state=<state>]
        сначала получаем code, затем передав code получим token, при этом редиректит на Callback URI указанный при регистрации приложения.

        требуемый ответ token|code, от OAuth-сервера, будет добавлен к redirect_uri

        сниппет запущеный из плагина не отработает таким образом…
        хотя я может чего не знаю?
          Василий Наумкин
          Василий Наумкин Администратор
          27 октября 2013, 21:21
          По идее, тебе нужно, чтобы отправкой на сервис и приемкой с него занимался плагин, всегда по одному адресу
          http://sitename.ru/?action=send_text
          Он же будет и Callback URI.

          Очень похоже на HybridAuth. Не пробовал через него авторизоваться и посмотреть в сессию? Там будет токен авторизации в массиве HA:: НЕ_ПОМНЮ.
            Володя
            Володя Эксперт
            27 октября 2013, 22:41
            до полного понимания того что ты написал потребуется время)))
            HybridAuth да по такому же принципу работает…
            Грубо говоря я прописываю sitename.ru/?action=send_text а плагин как то должен обрабатывать $_REQUEST['action']?
              Василий Наумкин
              Василий Наумкин Администратор
              28 октября 2013, 06:40
              Да.

              Плагин, например, запускается на событие OnHandleRequest:
              if ($modx->event->name == 'OnHandleRequest') {
              	if (!empty($_REQUEST['action']) && $_REQUEST['action'] == 'send_text') {
              		// Можно работать
              	}
              }

              Возможно, тебе больше подойдут другие события, когда веб-страница уже загружена, типа OnWebPageComplete или OnLoadWebDocument.
                Володя
                Володя Эксперт
                28 октября 2013, 11:01
                Доброе утро!
                Василий, событие да другое должно быть, мне OnHandleRequest не подойдет, скорее всего OnDocPublished (отправка нужна только один раз). Но все манипуляции только в админке происходят и каким образом мне $_REQUEST['action'] слушать?

                ну слушать то я его буду в плагине, но как оно там появится то? как мне эту цепочку запустить?
                Уже по разному пробовал, если на OnDocPublished ставить то зависает при ответе от yandex…
    Володя
    Володя Эксперт
    29 октября 2013, 09:47
    убрал зависимость от Callback URI и все заработало как нужно!

    Василий подскажи пожалуйста — тяжело ли кнопку сделать в админке MODX со своим событием?
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      10