2010-07-27 4 views
0

아주 간단한 앱을 만들려고 노력하고 있지만, 더 어려울만한 작업 인 것 같습니다. 상상해보십시오.비 웹뷰/브라우저를 통한 간단한 Gmail 로그인 HTTPS POST

나는 기본적인 두 개의 텍스트 필드, 사용자 이름 & 암호 (수행)과, 간단한 사용자 인터페이스를 사용해야하고 로그인 버튼을 누른되면, 그것은 통해 Gmail (또는 기업의 Gmail 계정)에 로그인 https POST (모든 Gmail 액세스는 이제 'https'를 통해서만 수행됩니다.) 간단한 UI가 닫히고 사파리가받은 편지함에 으로 열립니다 (로그인 창에는 표시되지 않음).

Safari에 소켓 핸들이나 쿠키 데이터를 전달할 방법이 없습니까? 또는 Safari에 매개 변수로 제공 할 수있는 임시 파일을 작성하여 열어보십시오.

내가 아마 필요가 없습니다 만 빌드 오류의 스택을 얻기 위해, 다른 오픈 소스 라이브러리를 구축을 위해 노력 약 3 고체 일 보냈다

...

난 사실 아니다 올바른 데이터가 서버로 전송되고 있는지 확인하십시오.

기본적으로 제가 가진 것은 ... 아이디어가있는 사람은 누구입니까?

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]]; 

답변

0

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

구글은 사람들이 작업을 수행하기위한 코드를 제공하지만, 당신은 당신의 자신의 입력을 사용할 수 있도록 않을거야; 그런 종류의 허점의 결과를 상상해보십시오.

대신 Google 계정 로그인 페이지로 사용자를 리디렉션 할 수 있으며 성공/실패하면 페이지로 돌아갈 수 있습니다.