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

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

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

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

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

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

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

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

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

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

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

      Почему нельзя вызвать сниппет из плагина?
      $modx->runSnippet('mySnippet', $myParams);
        Володя
        27 октября 2013, 21:15
        0
        нет, это из меня фиговый объясняльщик!
        Чтобы получить разрешение пользователя на выполнение действий с его личными данными, приложение должно перенаправить пользователя по следующему 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
          0
          По идее, тебе нужно, чтобы отправкой на сервис и приемкой с него занимался плагин, всегда по одному адресу
          http://sitename.ru/?action=send_text
          Он же будет и Callback URI.

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

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

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

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

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