Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
1 / 1 / 1
Регистрация: 13.03.2012
Сообщений: 426

Авторизация vk api

19.12.2014, 20:31. Показов 2926. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.
пытаюсь написать авторизацию для vk, но выдает ошибку, помогите пожалуйста, не пойму в чем дело qt 5.2
widget.h
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#ifndef WIDGET_H
#define WIDGET_H
 
#include <QWidget>
#include <QUrl>
 
 
namespace Ui {
class Widget;
}
 
class Widget : public QWidget
{
    Q_OBJECT
 
public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();
 
private:
    Ui::Widget *ui;
};
 
#endif // WIDGET_H
main.cpp
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
#include "widget.h"
#include <QApplication>
 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
 
    return a.exec();
}
widget.cpp
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "widget.h"
#include "ui_widget.h"
 
Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    ui->webwin->load(QUrl("https://oauth.vk.com/authorize?client_id=4641003&scope=offline&redirect_uri=https://oauth.vk.com/blank.html&display=wap&response_type=token"));
    ui->label->clear();
}
 
Widget::~Widget()
{
    delete ui;
}
Добавлено через 27 минут
Ошибки:
C:\Qt\Qt5.2.1\Tools\QtCreator\bin\build-VkApi-Desktop_Qt_5_2_1_MinGW_32bit-Debug\debug\widget.o:-1: In function `ZN6WidgetC2EP7QWidget':
C:\Qt\Qt5.2.1\Tools\QtCreator\bin\VkApi\ widget.cpp:9: ошибка: undefined reference to `_imp___ZN8QWebView4loadERK4QUrl'
C:\Qt\Qt5.2.1\Tools\QtCreator\bin\build-VkApi-Desktop_Qt_5_2_1_MinGW_32bit-Debug\debug\widget.o:-1: In function `ZN9Ui_Widget7setupUiEP7QWidget':
C:\Qt\Qt5.2.1\Tools\QtCreator\bin\build-VkApi-Desktop_Qt_5_2_1_MinGW_32bit-Debug\ui_widget.h:34: ошибка: undefined reference to `_imp___ZN8QWebViewC1EP7QWidget'
C:\Qt\Qt5.2.1\Tools\QtCreator\bin\build-VkApi-Desktop_Qt_5_2_1_MinGW_32bit-Debug\ui_widget.h:37: ошибка: undefined reference to `_imp___ZN8QWebView6setUrlERK4QUrl'
collect2.exe:-1: ошибка: error: ld returned 1 exit status
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.12.2014, 20:31
Ответы с готовыми решениями:

Авторизация VK API
Для авторизации необходимо ввести логин/пароль с помощью QWebView Но при нажатии на кнопку &quot;Войти&quot; при установленном display...

VK API: Авторизация приложения проходит успешно, однако Access_token не пишется в "Выводе приложения"
Здравствуйте. Работаю с VK API в программе Qt 5.3.1. Пытаюсь авторизоваться в приложении таким кодом: void...

Авторизация vk.com API
Здравствуйте, возникла проблема с авторизацией в vk. В самой VS проект отлично запускается и работает, но отдельно взятый .exe отказывается...

6
419 / 418 / 72
Регистрация: 27.05.2012
Сообщений: 1,168
19.12.2014, 21:11
попробуй сделать клин ол, потом вызвать qmake и собрать
0
1 / 1 / 1
Регистрация: 13.03.2012
Сообщений: 426
19.12.2014, 22:23  [ТС]
Цитата Сообщение от Кудаив Посмотреть сообщение
попробуй сделать клин ол, потом вызвать qmake и собрать
__________________
прошу прощения, я просто еще не полностью освоил qt, начинаю осваивать, можно по подробнее
0
187 / 172 / 38
Регистрация: 03.08.2012
Сообщений: 596
20.12.2014, 02:38
Лучший ответ Сообщение было отмечено Семан как решение

Решение

в .pro-файл добавили QT += webkitwidgets?
1
9035 / 2936 / 493
Регистрация: 05.10.2013
Сообщений: 7,959
Записей в блоге: 216
20.12.2014, 08:33
Я просто скину вам несколько файлов из своего проекта. Может пригодится:

.pro
Кликните здесь для просмотра всего текста
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
QT       += core gui network webkitwidgets xml
 
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
 
TARGET = vkFriends
TEMPLATE = app
 
 
SOURCES += main.cpp\
        MainWindow.cpp \
    VKAuth.cpp
 
HEADERS  += MainWindow.h \
    VKAuth.h
 
FORMS    += MainWindow.ui


VKAuth.h
Кликните здесь для просмотра всего текста
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#ifndef VKAUTH_H
#define VKAUTH_H
 
#include <QWebView>
#include <QNetworkReply>
#include <QtXml>
 
class VKAuth : public QWebView
{
    Q_OBJECT
 
protected:
    QString m_app;
    QNetworkReply* m_http;
    void loadLoginPage();
 
public:
    VKAuth( const QString &app, QWidget* parent = 0 );
 
signals:
    void success(QDomDocument);
    void unsuccess();
 
public slots:
    void slotLinkChanged(QUrl url);
    void slotDone();
    void slotRequest();
 
private:
    QString m_access_token;
    QString m_expires_in;
    QString m_user_id;
};
 
#endif // VKAUTH_H


VKAuth.cpp
Кликните здесь для просмотра всего текста
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#include "VKAuth.h"
#include <QNetworkRequest>
#include <QMessageBox>
#include <QUrlQuery>
#include <QDebug>
 
VKAuth::VKAuth( const QString &app,
                QWidget* parent ) : QWebView( parent )
{
 
    QObject::connect(this, SIGNAL(urlChanged(QUrl)),
                     SLOT(slotLinkChanged(QUrl))
                     );
    m_app = app;
    loadLoginPage();
}
 
void VKAuth::loadLoginPage( ) {
    QUrlQuery query;
 
    query.addQueryItem("client_id", m_app);
    query.addQueryItem("layout", "https://oauth.vk.com/blank.html");
    query.addQueryItem("display", "popup");
    query.addQueryItem("scope", "2");
    query.addQueryItem("response_type", "token");
    query.addQueryItem( "v", "5.25" );
 
    QUrl url( "https://oauth.vk.com/authorize" );
    url.setQuery( query );
 
    load(url);
}
 
void VKAuth::slotLinkChanged(QUrl url)
{
    if ("/blank.html" == url.path()) {
        QRegExp regexp("access_token=([^,]+)&expires_in=([^,]+)&user_id=([^,]+)");
 
        QString str= url.fragment();
 
        if( -1 != regexp.indexIn(str) ) {
            m_access_token = regexp.cap(1);
            m_expires_in = regexp.cap(2);
            m_user_id = regexp.cap(3);
            slotRequest();
        }
    }
    else if("/api/login_failure.html" == url.path()){
        emit unsuccess();
    }
}
 
void VKAuth::slotRequest() {
    QUrlQuery query;
    query.addQueryItem("user_id", m_user_id);
    query.addQueryItem("fields", "online");
    query.addQueryItem("v", "5.2");
    query.addQueryItem("access_token", m_access_token);
 
    QUrl request(QString("https://api.vk.com/method/%1.xml?").arg("friends.get"));
    request.setQuery( query );
 
    qDebug() << request.toString( );
 
    QNetworkAccessManager *manager = new QNetworkAccessManager(this);
    m_http = manager->get(QNetworkRequest(request));
    QObject::connect(m_http, SIGNAL(finished()), this, SLOT(slotDone()));
}
 
void VKAuth::slotDone() {
    QString russian = QString::fromUtf8(m_http->readAll());
    QDomDocument dom;
    QByteArray aByteArray = russian.toUtf8();
    if (!dom.setContent(aByteArray)) {
        QMessageBox::critical(this, tr("Error"), tr("Failed to parse the file into a DOM tree"));
        return;
    }
 
    emit success(dom);
    hide(); //hide this window
    m_http->close();
}
1
9035 / 2936 / 493
Регистрация: 05.10.2013
Сообщений: 7,959
Записей в блоге: 216
20.12.2014, 09:04
Это пример, который показывает список друзей. Вам нужно только создать приложение http://vk.com/dev и ввести его ID в строке файла main.cpp: VKAuth vkAuth( "" ); // в ковычках должен быть номер

Библиотеки OpenSSL должны лежать рядом с exe
Миниатюры
Авторизация vk api  
Вложения
Тип файла: zip FriendsGet.zip (5.7 Кб, 52 просмотров)
Тип файла: zip Библиотеки для OpenSSL.zip (966.8 Кб, 33 просмотров)
0
1 / 1 / 1
Регистрация: 13.03.2012
Сообщений: 426
20.12.2014, 13:55  [ТС]
Цитата Сообщение от Flassie Посмотреть сообщение
в .pro-файл добавили QT += webkitwidgets?
только webkit, widgets Обязательно?

Добавлено через 14 минут
Цитата Сообщение от Семан Посмотреть сообщение
в .pro-файл добавили QT += webkitwidgets?
спасибо большое очень помогло
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.12.2014, 13:55
Помогаю со студенческими работами здесь

Авторизация API
Добрый день! Задался вопросом и не могу нагуглить: Есть простейшее API на PHP (REST вроде называется), хочу ообращаться с JS к...

Авторизация в Web API
Всем привет. Я использую ASp.NET WEB API и делаю авторизацию к нему. По сути мне нужно только логин/пароль и некоторые поля. Ни ролей...

авторизация vk не используя vk api
Здравствуйте. Нужно открыть сессию вконтакте, т.к пройти авторизацию,не используя api и selenium. Возможно ли это сделать с...

Вконтакте API и авторизация
Столкнулся с задачей: написать небольшое приложение для ВК, начал вникать и начал с Desktop приложения, для поняти принцыпов работы решил...

Авторизация API на Delphi
Доброго времени суток! Мне нужна ваша помощь. В первые создаю мобильное приложение на Android. Уже прочитано не мало материала по API, но...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru