2016-06-07 4 views
1

내 ios 앱에 linkedin ios sdk를 통합했습니다. 그래서 내가 linkedcontrol과 함께 인증하기 위해 버튼을 클릭하면 viewcontroller가 표시되고 사용자 이름과 비밀번호를 입력하는 페이지가 표시됩니다. 이제 올바른 사용자 이름과 암호를 입력하면 코드와 상태가 포함 된 URL이 반환됩니다. 문제는 요청과 함께 전송 된 상태 (임의의 문자열)가 응답 url에서 수신 된 것과 같지 않다는 점입니다. 예를 들어 나는 Linkedin ios sdk가 잘못된 데이터를 반환합니다.

state = @"qwertyu" 

그런 다음 반환 값이

state = @"qwertyu#!" 

여분 #입니다 보낼 경우! 그것에 첨부됩니다.

코드에서 전송 및 수신 상태가 동일하지 않은지 확인하는 중 오류가 발생했습니다 (올바른 사용자 이름과 암호를 입력 한 후 표시되는 오류입니다). 조건을 제거하면 완벽하게 작동합니다.

SYLinkedInApplication *app = [SYLinkedInApplication 
           applicationWithRedirectURL:self.redirectUrl 
           clientId:self.appKey 
           clientSecret:self.appSecret 
           state:@"<RANDOM-STRING>" 
           grantedAccess:@[#something]; 

조건

if ([self.application.state isEqualToString:receivedState]) { 
    //if true send success 
} 

그래서 제 질문은

1) 우리는 상태를 확인하기위한 경우 조건이 필요하십니까입니까?

2) 조건이 필요한 경우 반환 상태 문자열이 다른 이유는 무엇입니까?

희망 사항은 분명합니다.

미리 감사드립니다.

+0

나는 상태의 끝에'#! '를 추가하는 것과 같은 문제가있다. 그래서 나는 내 자신과 검증 할 때, 그들은 같지 않다. 나는이 검증을 우회하고 싶지 않다. 누군가는 해결책을 가지고있다. 이거? 저는 이오닉으로 이것을하고 있지만 같은 문제입니다. – Ariel

+0

이 비디오를 보시려면 https://www.youtube.com/watch?v=PXuu3t3pIe4을 방문하십시오. –

답변

0

나는이 문제를 해결했다.

1) 예, 상태를 확인하여 CSRF을 방지해야합니다. https://www.linkedin.com/uas/oauth2/authorization에서

https://www.linkedin.com/oauth/v2/authorization

그리고 https://www.linkedin.com/uas/oauth2/accessToken 내 문제를 해결 https://www.linkedin.com/oauth/v2/accessToken

에 :

2) 그건 내가 인증 및 액세스 토큰을 요청할 때 URL을 변경하여 해결할 문제입니다. 나는 그것이 너의 것 또는 다른 누군가의 것을 또한 해결하기를 바란다.

관련 문제