이 질문이 전체 컨텍스트와 비슷하거나 명확하지 않은 것으로 알고 제 첫 번째 질문을 게시하면 익숙해 짐에 따라 개선 될 것입니다. 가까운 해결책을 찾기 위해 유사한 문제 문을 검색하려고했습니다.iOS에서 NSURLSessions를 사용하는 서버 API oAuth2 인증
oauth2 인증을 사용하여 API를 인증 할 수 있도록 클라이언트 ID, 비밀번호, 리디렉션 URL을 웹 서버에서 제공합니다. 따라서 웹 서비스를 사용하기 전에 클라이언트는 API 호출에 제공 할 토큰을 받기 위해 승인 토큰 핸드 셰이크를 수행해야합니다. 와 NSURL을 만들어 내 IOS 클라이언트 응용 프로그램에서
같은 :NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration delegate:self delegateQueue:nil];
NSURLSessionDataTask *postDataTask = [session dataTaskWithRequest:request];
[postDataTask resume];
을 그리고 대리인 리디렉션 핸들러를 만들었습니다
NSString* urlString = [NSString stringWithFormat:@"%@/oauth/authorize/?client_id=%@&response_type=code&redirect_uri=%@",myServerHostName, myAppClientId,myServerRedirectHostname];
NSURL *url = [NSURL URLWithString:urlString];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];
[request addValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setValue:@"utf-8" forHTTPHeaderField:@"charset"];
[request setHTTPMethod:@"POST"];
이 NSURLRequest 위의와 적절한 매개 변수와 NSURLSession 및 NSURLSessionDataTask 만들기 새 리디렉션 URL을 다음과 같이 가져올 수 있습니다.
- (void)URLSession:(NSURLSession *)session task:(NSURLSessionDataTask *)task willPerformHTTPRedirection:(NSHTTPURLResponse *)response newRequest:(NSURLRequest *)newRequest completionHandler:(void (^)(NSURLRequest *))completionHandler {
//Doing stuff : Grab the new redirected URL to get the oauth2 code. from the URL.
}
oauth2를 액세스/사용 전에 인증하기위한 합법적 인 방법 일 수 있습니까?
현재 내 서버는 위의 요청을 받으면 500을 던져 실패합니다.
Completed 500 Internal Server Error in 14ms
NameError (undefined local variable or method `login_path' for #<Doorkeeper::AuthorizationsController:0x000001078c1560>)
하지만 웹을 통해이 작업을하려고하면 예를 들어 '고급 REST 클라이언트'를 사용하여, 클라이언트가 성공적으로 (상태 코드 302) 리디렉션 URL을받습니다.