@julia-finance

Не работает API Одноклассники для сайта Wordpress, что делать?

Почему-то не работает API Одноклассники для сайта Wordpress (плагин Wordpress Social Login), все настройки произведены, при нажатии авторизации через Одноклассники, выдает ошибку - Одноклассники отклоняют запрос. Если менять ссылку редиректа, то пишет просто - ссылка не задана в настройках.

Вот что выдает плагин:

Request failed. Either you have cancelled the authentication or Odnoklassniki refused the connection.
  • Вопрос задан
  • 898 просмотров
Пригласить эксперта
Ответы на вопрос 2
@RomanKlsnk
Столкнулся с той же проблемой, у меня был WordPress 4.8.2 с Wordpress Social Login 2.3.3
В данный момент обработчик Одноклассников устарел, их АПИ обновилось + используется доп. ключ авторизации (в письме это "Публичный ключ приложения"). Вот что мне помогло:
  • В поле "Application Secret" для Odnoklassniki в плагине Social Login устанавливаем "Секретный ключ приложения" из письма Одноклассников о регистрации приложения
  • Далее придется редактировать обработчик ОК в плагине, это на самом деле плохо, но это самый быстрый способ решить проблему (по хорошему внести правку на GitHub):
    • открываем на редактирование файл "/wp-content/plugins/wordpress-social-login/hybridauth/Hybrid/Providers/Odnoklassniki.php"
    • в функции "initialize()" необходимо сменить УРЛы точек доступа, итоговый вид функции:
      function initialize() 
      	{
      		parent::initialize();
      
      		// Provider apis end-points
      		$this->api->api_base_url    = "https://api.ok.ru/fb.do";
      		$this->api->authorize_url   = "https://connect.ok.ru/oauth/authorize";
      		$this->api->token_url       = "https://api.ok.ru/oauth/token.do"; 
      		$this->api->sign_token_name = "access_token";
      	}

    • после внесения данных правок должна заработать аутентификация, но выборка данных работать не будет
    • далее, в функции "getUserProfile()" необходимо установить корректное значение для публичного ключа, в текущий момент оно береться с переменной "$this->config['keys']['key']", для этого в начале функции можно прописать что то вроде:
      function getUserProfile()
      	{
      		$this->config['keys']['key'] = '<Публичный ключ приложения>';
      		$sig = md5('application_key=' . $this->config['keys']['key'] . 'method=users.getCurrentUser' . md5($this->api->access_token . $this->api->client_secret));
      		$response = $this->api->api( '?application_key=' . $this->config['keys']['key'] . '&method=users.getCurrentUser&sig=' .$sig); 
      		...
      	}

      вместо "<Публичный ключ приложения>" впишите свое значение


Ответ написан
@neko66
julia-finance нашли решение?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы