Простой вход в Gmail через браузер без HTTPS POST - PullRequest
0 голосов
/ 27 июля 2010

Я пытаюсь создать очень простое приложение, но это оказывается гораздо более сложной задачей, чем можно себе представить.

Мне нужно использовать простой пользовательский интерфейс с двумя основными текстовыми полями, UserName & PassWord (готово), и после нажатия кнопки входа в систему он входит в gmail (или любую корпоративную учетную запись Gmail) через https POST (я думаю, что весь доступ к gmail теперь осуществляется только через 'https') и простой пользовательский интерфейсзакрывается, и Safari открывается в папке «Входящие» (не в окне входа в систему).

Нет ли способа передать дескриптор сокета или некоторые данные cookie в Safari?Или даже написать временный файл, который можно передать в Safari в качестве параметра, чтобы открыть ..?

Я потратил около трех дней, пытаясь создать другие библиотеки с открытым исходным кодом, чего я, вероятно, не делаюдаже нужно, только чтобы получить стек ошибок сборки ...

Я даже не уверен, что правильные данные отправляются на сервер ...

Вот в основном то, что я 'У нас есть ... кто-нибудь с любыми идеями ...?

NSString *urlString = @"https://www.google.com/LoginAction2?service=mail";

// setting up the request object now
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
[request setURL:[NSURL URLWithString:urlString]];
[request setHTTPMethod:@"POST"];

NSString *contentType = [NSString stringWithFormat:@"application/x-www-form-urlencoded"];
[request addValue:contentType forHTTPHeaderField: @"Content-Type"];

NSMutableData *body = [NSMutableData data];
[body appendData:[[NSString stringWithFormat:@"action=https://www.google.com/LoginAction2?service=mail&"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"Email="] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:userName] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"&"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"Passwd="] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:passWord] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"&"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"continue=https://mail.google.com/&"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"PersistentCookie=yes&"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"signIn=\"Sign in\"&"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"media="] dataUsingEncoding:NSUTF8StringEncoding]];

[request setHTTPBody:body];
NSString *msgLength = [NSString stringWithFormat:@"%d", [body length]];
[request addValue: msgLength forHTTPHeaderField:@"Content-Length"];

NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];

[pool release];

URLWithString:@"https://mail.google.com/"]];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString: returnString]];

1 Ответ

0 голосов
/ 27 июля 2010

http://code.google.com/apis/accounts/docs/OpenID.html

Google предоставляет код, чтобы люди могли это сделать, но вы не сможете использовать свои собственные входные данные; просто представьте последствия такого рода лазейки.

Вместо этого Google позволяет перенаправить пользователя на страницу входа в учетную запись Google, а в случае успеха / неудачи вернуться на свою страницу.

...