1

Square OAuth 플로우에서 판매자를 인증하는 데 문제가 있으며 Objective-C에서 AFNetworking 2.0을 사용 중입니다. 나는 'openURL'메서드를 호출하여 Square 로그를 페이지로 가져 왔습니다. 여기에서 상인으로 로그인 할 수 있지만 앱으로 돌아 가지 않습니다. 이 작업을 수행하기 위해해야 ​​할 일에 대한 권장 사항 및 코드 예제는 여기에서 매우 분실되어 많은 도움이 될 것입니다. 미리 감사드립니다!iOS Square Connect 판매자 승인 문제

OPEN URL의 호출 '의 OpenURL'호출이 성공적으로 클라이언트 ID와 사파리에 리디렉션 URL에 'https://connect.squareup.com/oauth2/authorize'로 사용자를 리디렉션

. 로그인 후 권한에 대해 "허용"을 누르면 응용 프로그램으로 다시 이동하지 않습니다. 내가 시도한 코드는 다음과 같습니다.

NSString *urlString= @"https://connect.squareup.com/oauth2/authorize"; 
NSString *clientID = @"client_id=[CLIENT_ID]"; 
NSString *responseType = @"response_type=code"; 
NSString *fullURL = [NSString stringWithFormat:@"%@?%@&%@", urlString, clientID, responseType]; 

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:fullURL]]; 

URLSchemes 및 URL 식별자와 관련이 있다고 생각합니다. Square 포털의 "리디렉션 URL"이 URL 스키마 또는 URL 식별자와 같아야합니까? 나는 둘 다 시도하고 그것은 작동하지 않았다.

예를 들어, 내 Info.plist의 다음 값이 정확합니까? 내 URL 구성표 단일 항목은 "iostestapp"이고 URL 식별자는 "com.name.iostestapp"입니다. Square 포털의 "리디렉션 URL"은 "https://com.name.iostestapp"입니다.

내가 제공하는 코드 외에 다른 것이 있습니까? 나는 OAuth에 관해서는 온라인으로 다루는 사람을 많이 보았지만 Square 문서에는 보이지 않는다.

답변

2

사용자가 개발자 응용 프로그램에 API를 통해 데이터에 액세스하도록 권한을 부여해야합니다. 이렇게하려면 스퀘어를 통해 사용자에게 Oauth 플로우를 제공해야합니다. 프로그래밍 방식으로이 URL에 GET 요청을 수행하는 것만으로는 충분하지 않습니다. 웹 브라우저에서 oauth 플로우를 통해 사용자를 안내해야합니다.

https://connect.squareup.com/oauth2/authorize?client_id=CLIENT_ID과 같은 웹 페이지를 열면 사용자에게 Oauth 플로우를 표시 할 수 있습니다. CLIENT_ID는 Square 개발자 포털에 개발자 애플리케이션을 등록 할 때 제공 한 애플리케이션 식별자입니다. 개발자 포털은 https://connect.squareup.com/apps에 있습니다. 개발자 포털에서 oauth redirect_uri도 지정해야합니다. 사용자가 응용 프로그램을 허가하면 액세스 토큰 또는 단일 사용 코드 (사용자가 액세스 토큰을 교환 할 수 있음)로 지정한 redirect_uri로 리디렉션됩니다.

또한 개발자 포털에서 응용 프로그램을 만들 때 자신의 사용자를 대신하여 API 호출을 수행하고 API를 테스트하는 데 사용할 수있는 "개인 액세스 토큰"을 제공합니다.

+0

웹 후크 등으로 리디렉션 URL에 추가되는 단일 사용 코드를 추출해야합니까? 내가 제공 한 리디렉션 URL은 Parse 인 백엔드를 통해 만든 하위 도메인입니다. 나는이 일을 전에하지 않았고 그것에 관해 많이 알지 못해서 확신 할 수 없다. 브라우저에서 리다이렉트 (redirect)가 GET 요청으로 간주된다는 것을 읽었는데, 웹 훅 (webhook)이 올바르지 않은 경우 URL을 가져올 방법을 찾고 있습니다. 파스는 클라우드 코드를 가지고 있습니다. 여기서 내가 필요하다고 생각하는 백엔드 메소드를 수행 할 수 있습니다. – mdimarca