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

    @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); 
        		...
        	}

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


    Ответ написан
    3 комментария