Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с использованием QOAuth 
:(
    Опции темы
Mephisto
Дата 16.4.2011, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: 1
Всего: 34



Люди, пишу клиент к одному веб сервису. Сервис предоставляет авторизацию через OAuth 1.0.
Вот что у них написано в документации:
Цитата

- Use GET method for all requests
- Use HMAC-SHA1 to sign all requests
- Always provide oauth_callback in the request to request_token.ashx. If your product cannot receive a callback, use oauth_callback=oob 


У меня следующая реализация коннекта:
Код

QString tKey = QString("тут мой ключ");
QString tSecret = QString("тут мой ключ");
QString tReq = QString("https://путь к сервису/request_token.ashx");

void MainTestForm::clicked(bool )
{
    QString request = QString(htReq);
    qDebug() << "request: " << request;
    poauth->setConsumerKey(tKey.toAscii());
    poauth->setConsumerSecret(tSecret.toAscii());
    poauth->setRequestTimeout(10000);
    
    QOAuth::ParamMap reply = poauth->requestToken(request, QOAuth::GET, QOAuth::HMAC_SHA1 );
    qDebug() << poauth->error();

    switch(poauth->error())
    {
      case(QOAuth::BadRequest):
    qWarning() << "error: Represents HTTP status code 400 (Bad Request).";
    return;
      case(QOAuth::Unauthorized):
    qWarning() << "error: Represents HTTP status code 401 (Unauthorized).";
    return;
      case(QOAuth::Forbidden):
    qWarning() << "error: Represents HTTP status code 403 (Forbidden).";
    return;
      case(QOAuth::Timeout):
    qWarning() << "error: Represents a request timeout error.";
    return;
      case(QOAuth::ConsumerKeyEmpty):
    qWarning() << "error: Consumer key has not been provided.";
    return;
      case(QOAuth::ConsumerSecretEmpty):
    qWarning() << "error: Consumer secret has not been provided.";
    return;
      case(QOAuth::UnsupportedHttpMethod):
    qWarning() << "error: The HTTP method is not supported by the request.";
    return;
      case(QOAuth::OtherError):
    qWarning() << "error: A network-related error not specified above.";
    return;
    }
}

int main(int argc, char** argv)
{
    QApplication app(argc, argv);
    pManager = new QNetworkAccessManager();
    poauth = new QOAuth::Interface(pManager);
    MainTestForm foo;
    foo.show();
    return app.exec();
}



В результате всегда сваливаюсь в QOAuth::Unauthorized. Хоть на самом ресурсе есть вариант проверить свои ключи и они проходят проверку нормально.
Что самое странное, этим же кодом попытался пройти авторизацию на твиттере, прошел нормально. Только подставлял коды выданные твиттером и коннект на твиттер.
Но есть одна разница:
ConsumerKey к первому сервису содержит два символа "=" у себя в теле, а ConsumerSecret "=" и два "+". Может их преобразовать как-то необходимо чтобы посредством GET их можно было корректно передать?


Это сообщение отредактировал(а) Mephisto - 2.5.2011, 17:53
PM   Вверх
Mephisto
Дата 2.5.2011, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: 1
Всего: 34



Из поддержки мне вот так ответили:
Цитата

When you get parameters in url, urldecode them before use, it may help you.

Бьюсь над решением, но пока не нахожу.
Есть у кого идеи?
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0420 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.