Дело в том, что в админке вордпресса в плагине, нету поля для указания публичного ключа, поэтому я, лично тупо костылем заменил в файле Odnoklassniki.php в методе getUserProfile() : $this->config['keys']['key'] заменил на сам публичный ключ который приложение мне дало, и все заработало
client_id - это id приложения.
В запросе api.odnoklassniki.ru/fb.do?application_key=&method=... видно, что параметр application_key пуст, но здесь должен быть публичный ключ приложения. Возможно, проблема где-то внутри плагина.
Столкнулся с такой же проблемой. Подключил вк, фб, г+, а вот одноклассники не подключаются.
Попробовал отправить приложение на модерацию. Посмотрим, что даст.
Авторизация через Одноклассники и WSL теперь работает... но! Одноклассники возвращают только email юзера: ни имени, ни адреса... нахрен такую авторизацию!
После бессонной ночи получилось вытянуть из Одноклассников данные о пользователе: имя, фамилия и т. д. На идеальный код не претендую, но работает. В методе getUserProfile() после $response = $this->api->api( '?application_key=' . $this->config['keys']['key'] . '&method=users.getCurrentUser&sig=' .$sig.'&fields=email') добавляем:
/*
* Get more user info
*/
$sign = md5("application_key=".$this->config['keys']['key']."format=jsonmethod=users.getCurrentUser" . md5("{$this->api->access_token}{$this->api->client_secret}"));
$params = array(
'method' => 'users.getCurrentUser',
'access_token' => $this->api->access_token,
'application_key' => $this->config['keys']['key'],
'format' => 'json',
'sig' => $sign
);
// @array
$userInfo = json_decode(file_get_contents('http://api.odnoklassniki.ru/fb.do' . '?' . urldecode(http_build_query($params))), true);
foreach($userInfo as $k => $v) {
$response->$k = $v;
}
// End
Правда, если имя в ОК указано кириллицей, ник в профиле будет "info" (переменная $this->user->profile->displayName ниже по коду). Но юзер сможет его изменить, если нужно.