2011-02-11 4 views
2

저는 salesforce 개발에 아주 새로운 제품이며 Salesforce에 연결하여 토큰을 얻으려고합니다.iPhone Objective C oauth 2.0 로그인 - unsupported_grant_type

내 질문은 2 배로 생각됩니다. 1) SF로 인증하기 위해 웹 페이지를 사용해야합니까?

2) 그렇지 않은 경우 왜 이것이 작동하지 않습니까? 내가 인증의 사용자 이름과 암호 방법을 사용하려고하면 내가 얻을 : 은 { "오류": "unsupported_grant_type", "ERROR_DESCRIPTION": "보조금이 지원되지 않는 유형"} :

NSString *post = [NSString stringWithFormat:@"grant_type=basic-credentials&client_id=%@&client_secret=%@&redirect_uri=%@", 
        kOAuthClientID, 
        kOAuthClientSecret, 
        kOAuthClientAuthURL 
        ]; 


NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES]; 
NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]]; 

NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease]; 
[request setURL:[NSURL URLWithString:kOAuthClientTokenUrl]]; 
[request setHTTPMethod:@"POST"]; 
[request setValue:postLength forHTTPHeaderField:@"Content-Length"]; 
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; 
[request setHTTPBody:postData]; 

NSError *error; 
NSURLResponse *response; 
NSLog(@"%@", request); 
NSData *urlData=[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 
NSString *data=[[NSString alloc]initWithData:urlData encoding:NSUTF8StringEncoding]; 
NSLog(@"%@", data); 
다음

내 코드입니다

모든 의견을 환영합니다.

나는 grant_type = authorization_code을 사용하려고하지만 또 다른 오류가 발생했습니다 않았다

{"error":"invalid_grant","error_description":"invalid authorization code"}

+0

안녕하세요, kOAuthClientAuthURL & kOAuthClientTokenUrl이 무엇을 의미하는지 알려주실 수 있습니다. 어떻게 마침내 성공할 수 있었는지, "수퍼 펠"로 답변을 얻으 실 수 있습니까? – sole007

답변

3

, 다음의 유형은 비록 암호가 아닙니다 기본-자격 증명, 당신의 이전 질문에서 언급 한 바와 같이

grant_type=password 
client_id=xxxxxxxxxx 
client_secret=1234567890 
[email protected] 
password=XXXXXXXXX 

있습니다 보낼 수있는 매개 변수의 올바른 세트입니다 이 방법을 사용하면 SAML과 같은 대체 로그인 서비스를 사용하는 Salesforce 고객을 지원할 수 있도록 웹 기반의 흐름을 실제로 사용하려고합니다.

+0

위에서 언급 한 매개 변수를 사용하여 "unsupported_response_type"오류가 발생했습니다. 리디렉션 된 URI가 누락되었다는 오류가 발생하면 Salesforce의 OAuth2 성공 URL을 제공합니다. 여전히 세션 ID 나 토큰이 아닌 약간의 도움이 필요한 괴상한 응답을 얻습니다. ( – sole007

+0

URL을 보내려는 URL이 있으며 모든 매개 변수를 URL 인코딩해야합니다. – superfell

+0

즉, https : //login.salesforce와 같은 salesforce success url을 보내고 있습니다.co.kr/services/oauth2/success를 참조하십시오. 그리고 나는 형식적인 URL에있는 모든 것을 인코딩합니다. 어떤 도움 plz – sole007

1

1) 예 OAuth를 사용하면 세일즈 포스에 로그인하여 응용 프로그램 액세스 권한을 부여 할 필요가 않습니다. iOS 앱의 경우 클라이언트 흐름을보고있을 것입니다. Salesforce OAuth Client Flow Doc

2) the Force.com developer site의 iOS 용 툴킷을 살펴보십시오. ZKOAuthViewController라고 불리는 클래스가 있습니다. 나머지 테일 라이트는 Force.com의 SOAP API를 기반으로하지만 툴킷을 기반으로하는 자체 OAuth 로그인 컨트롤러를 만들고 대신 REST API를 사용합니다. 당신은 사용자 이름/암호 부여 유형을 사용하려면

+0

1) 그렇다면 응용 프로그램에서 토큰을 가져 오기 위해 UIWebView를 열어야한다는 말입니까? 이 주위에 어떤 방법이 있습니까? 직접 사용자 이름과 암호 방법을 사용할 수 있다고 생각했습니다. - https://na8.salesforce.com/help/doc/ko/remoteaccess_oauth_username_password_flow.htm#up_obtain_access_token – smcdrc

+0

예, 사용자 이름과 암호 방법을 사용할 수 있지만 필요합니다. 권장하지 않는 코드에 클라이언트 키와 암호를 포함합니다. –

+0

2) ZKOAuthViewController를 찾을 수 없습니다. – smcdrc