Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
-11 / 0 / 0
Регистрация: 17.12.2017
Сообщений: 12

Авторизация OneDrive

15.07.2019, 11:34. Показов 1295. Ответов 0

Студворк — интернет-сервис помощи студентам
Всем привет. Пытаюсь авторизоваться в OneDrive с помощью WinHttp для С++(задание такое, авторизоваться без OneDrive Api). Подскажите на какую страницу необходимо ломиться для авторизации? Пробовал на login.live.com, но в куки HTTP 200, авторизацию не просит( такое ощущение, что только перехожу на эту страницу). Более того, когда выгружаю страницу пишет, что "Your browser is currently set to block cookies. You need to allow cookies to use this service.", хотя куку автоматом обробатывает WinHttp. Направьте пожалуйста, а то совсем запутался... Заранее большое спасибо)
Код прилагаю ниже, хотя там всё стандартно:
C++
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
int main()
{
    LPVOID lpOutBuffer = NULL;
    LPVOID lpBuffer = NULL;
    LPVOID lpdwBufferLength = NULL;
    BOOL bResults = FALSE;
    DWORD dwSize = sizeof(DWORD);
 
    HINTERNET   hSession = NULL,
                hConnect = NULL,
                hRequest = NULL;
 
//НАЧАЛО ЗАПРОСОВ
 
    hSession = WinHttpOpen( L"ODD",
                            WINHTTP_ACCESS_TYPE_DEFAULT_PROXY,
                            WINHTTP_NO_PROXY_NAME,
                            WINHTTP_NO_PROXY_BYPASS,
                            WINHTTP_FLAG_ASYNC);
 
    if (hSession)
        hConnect = WinHttpConnect(  hSession,
                                    L"login.live.com",
                                    INTERNET_DEFAULT_HTTPS_PORT,
                                    0); 
 
    if (hConnect)
        hRequest = WinHttpOpenRequest(  hConnect,
                                        L"GET",
                                        NULL,
                                        NULL,
                                        WINHTTP_NO_REFERER,
                                        NULL,
                                        WINHTTP_FLAG_SECURE);
 
    if (hRequest)
        bResults = WinHttpSendRequest(  hRequest,
                                        NULL,
                                        0, 
                                        WINHTTP_NO_REQUEST_DATA, 
                                        0,
                                        0, 
                                        0);
    if (bResults)
        bResults = WinHttpReceiveResponse(hRequest, NULL);
 
    if (bResults)
    {
        WinHttpQueryHeaders(hRequest, 
                            WINHTTP_QUERY_RAW_HEADERS_CRLF,
                            WINHTTP_HEADER_NAME_BY_INDEX, NULL,
                            &dwSize, WINHTTP_NO_HEADER_INDEX);
 
        // Allocate memory for the buffer.
        if (GetLastError() == ERROR_INSUFFICIENT_BUFFER)
        {
            lpOutBuffer = new WCHAR[dwSize / sizeof(WCHAR)];
 
            // Now, use WinHttpQueryHeaders to retrieve the header.
            bResults = WinHttpQueryHeaders( hRequest,
                                            WINHTTP_QUERY_RAW_HEADERS_CRLF,
                                            WINHTTP_HEADER_NAME_BY_INDEX,
                                            lpOutBuffer, &dwSize,
                                            WINHTTP_NO_HEADER_INDEX);
            if (bResults)
                printf("=================================================\nHeader contents: \n%S=================================================", lpOutBuffer);
            delete[] lpOutBuffer;
        }
    }
 
    if (!bResults)
        printf("Error %d has occurred.\n", GetLastError());
 
//НАЧАЛО ВЫГРУЗКИ СТРАНИЦЫ
 
    // open file
    FILE* file;
    int err = fopen_s(&file, "test.html", "w");
    if (err == 0)
        int a = 0;
        //printf("The file 'crt_fopen_s.c' was opened\n");
    else
    {
        printf("The file 'crt_fopen_s.c' was not opened\n");
        return 0;
    }
 
    if (bResults)
    {
        LPBYTE pszOutBuffer;
        DWORD dwDownloaded = 0;
        do
        {
            // Check for available data.        
            dwSize = 0;
            if (!WinHttpQueryDataAvailable(hRequest, &dwSize))
                printf("Error %u in WinHttpQueryDataAvailable.\n", GetLastError());
            // Allocate space for the buffer.        
            pszOutBuffer = new byte[dwSize + 1];
            if (!pszOutBuffer)
            {
                printf("Out of memory\n");
                dwSize = 0;
            }
            else
            {
                // Read the Data.            
                ZeroMemory(pszOutBuffer, dwSize + 1);
                if (!WinHttpReadData(hRequest, (LPVOID)pszOutBuffer, dwSize, &dwDownloaded))
                    printf("Error %u in WinHttpReadData.\n", GetLastError());
                else
                    fputs((const char*)pszOutBuffer, file);
 
                // Free the memory allocated to the buffer.            
                delete[] pszOutBuffer;
            }
        } while (dwSize > 0);
 
        // Close file
        err = fclose(file);
        if (err == 0)
        {
            int a = 0;
            //printf("The file 'crt_fopen_s.c' was closed\n");
        }
        else
        {
            printf("The file 'crt_fopen_s.c' was not closed\n");
        }
 
    }
    // Report any errors.
    if (!bResults)
        printf("Error %d has occurred.\n", GetLastError());
 
    //if (hRequest) WinHttpCloseHandle(hRequest);
    //if (hConnect) WinHttpCloseHandle(hConnect);
    if (hSession) WinHttpCloseHandle(hSession);
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.07.2019, 11:34
Ответы с готовыми решениями:

Работа с OneDrive
Здравствуйте. Подскажите пожалуйста простейший пример как работать с OneDrive. Учетная запись создана, папки с файлами там уже есть. Как...

Download from onedrive curl
Здравствуйте! Есть ссылка типа https://onedrive.live.com/view.aspx?ref=but...!AJjkjh7pОg на книгу excel в Onedrive которую надо...

Не запускается OneDrive на Windows 10
При попытке запуска OneDrive в Windows 10 ничего не происходит. Иконка в трее отсутствует. Попытка установки ничего не даёт. Добавлено...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.07.2019, 11:34
Помогаю со студенческими работами здесь

Удаление ссылки на OneDrive
Как удалить ссылку на OneDrive?

Работа с облаками OneDrive
Я новичок, просьба не издеваться. Можно ли в C#-Windows Forms Aplication использовать программно файл с облака? К примеру OneDrive. ...

Доступ к Access-у, размещённому в OneDrive
Всем привет! Подскажите пожалуйста, можно ли сделать доступ к разделённому файлу Access для БД, размещённому в OneDrive? Например,...

OneDrive и локальная учетная запись
Обновил Win 8 до 8.1. И сразу огорчился - использовать OneDrive с локальной учетной записью нельзя, нужно обязательно логиниться через их...

Skydrive или Onedrive свой собственный?
Скажите, есть ли ПО для того, чтобы "поднять" в локальной сети что-то наподобие Skydrive или Яндекс.Диск, для работы с файлами через http...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru