동기화 게이트웨이 API를 사용하면 클라이언트 측에서 특정 사용자로 인증하여 이 사용자가 액세스할 수 있는 데이터를 복제할 수 있습니다. 기본 인증의 경우, 사용자가 이미 동기화 게이트웨이 데이터베이스에 존재해야 합니다. 사용자를 만드는 방법에는 두 가지가 있습니다:

  • 아래의 구성 파일에서 사용자 필드에 입력합니다.
  • 관리자 REST API에서.

관리자 포트(4985)는 공개적으로 액세스할 수 없으므로 로그인 및 가입 화면을 제공하려면 사용자 생성을 처리하는 앱 서버를 적절히 설정해야 합니다. 이 튜토리얼에서는 그 방법을 배웁니다:

  • 관리자 REST API를 사용하여 사용자를 만듭니다.
  • 사용자를 관리하기 위해 Node.js로 앱 서버를 설정합니다.
  • 샘플 안드로이드 앱에서 로그인 및 가입 화면을 디자인하여 앱 서버를 테스트합니다.

시작하기

동기화 게이트웨이를 다운로드하고 파일의 압축을 풉니다:

http://www.couchbase.com/nosql-databases/downloads#Couchbase_Mobile

이 튜토리얼에서는 구성 파일이 필요하지 않습니다. 기본 구성 속성의 경우 명령줄 옵션을 사용할 수 있습니다. 실행할 바이너리는 ~/Downloads/couchbase-sync-gateway/bin/. 를 사용하여 프로그램을 실행하십시오. --help 플래그를 선택하면 사용 가능한 옵션 목록을 볼 수 있습니다:

이 튜토리얼에서는 dbname, 인터페이스, 예쁜 그리고 URL:

사용자를 만들려면 터미널에서 다음을 실행하면 됩니다:

참고: JSON 객체의 이름 필드에는 공백이 없어야 합니다.

이렇게 하면 201 생성됨 상태 코드를 입력합니다. 이제 표준 포트에서 이 사용자로 로그인합니다:

응답에는 설정-쿠키 헤더와 본문에 사용자 세부 정보를 입력합니다.

모든 카우치베이스 모바일 SDK에는 인증을 위해 사용자 이름과 비밀번호를 지정하는 방법이 있으므로 두 번째 로그인 요청에 대해 걱정할 필요가 없습니다.

앱 서버

이 섹션에서는 /_user 관리자 REST API 엔드포인트를 공개하여 사용자가 앱을 통해 가입할 수 있도록 합니다.

인기 있는 Express 모듈을 사용하여 사용자 생성 요청을 처리하고 요청 모듈을 사용하여 다른 모든 트래픽을 동기화 게이트웨이로 프록시합니다.

다음 Node.js 모듈을 설치합니다:

새 파일 열기 server.js 를 클릭하고 다음을 추가합니다:

단계별 진행 상황은 다음과 같습니다:

  1. Express의 새 인스턴스를 즉시 실행하고 bodyParser 경로가 일치하는 경우에만 미들웨어 가입. 실제로 동기화 게이트웨이에 프록시된 다른 모든 요청의 경우 원시 요청 본문이 필요합니다.
  2. 처리 /signup 요청 모듈을 사용하여 관리자 포트에 사용자를 생성합니다.
  3. 다른 모든 요청을 동기화 게이트웨이로 프록시합니다.
  4. 포트 8000에서 Node.js 웹 서버를 시작합니다.

이제부터 아래 URL을 사용하여 앱을 통해 사용자를 생성하고 푸시/풀 복제를 시작합니다:

http://localhost:8000

다른 사용자를 만들어 모든 것이 예상대로 작동하는지 테스트합니다:

그리고 이 사용자로 로그인합니다:

다음 섹션에서는 이러한 엔드포인트를 테스트하기 위해 로그인 및 가입 화면이 있는 간단한 Android 앱을 만들 것입니다.

안드로이드 앱

Android 스튜디오를 열고 새 안드로이드 스튜디오 프로젝트 시작 에서 빠른 시작 메뉴로 이동합니다.

앱 이름 지정 스마트홈를 클릭하고 적절한 회사 도메인과 프로젝트 위치를 설정한 다음 다음:

대상 Android 장치 대화 상자에서 다음을 확인합니다. 휴대폰 및 태블릿를 클릭하고 최소 SDK를 API 22: Android 5.1(롤리팝) 를 클릭하고 다음:

이후 모바일에 활동 추가 대화 상자에서 추가 빈 활동 를 클릭하고 활동 이름을 지정합니다. 환영 활동:

가입 및 로그인 기능을 구축하려면 두 가지 종속성을 사용하게 됩니다:

  • 안드로이드 디자인 지원 라이브러리를 사용하여 머티리얼 디자인 사양을 따르는 입력 텍스트 컴포넌트를 만들 수 있습니다.
  • OkHttp를 사용하여 다음 주소로 POST 요청을 처리합니다. /signup 그리고 /스마트홈/_session.

In build.gradle를 클릭하고 해당 종속성을 추가합니다:

In activity_welcome.xml를 클릭하고 다음을 추가합니다. 리니어 레이아웃 기존 상대 레이아웃:

두 버튼 모두 onClick 속성을 추가합니다. 메서드 중 하나에 마우스 커서를 이동하고 Alt + Enter > 오픈 로그인 활동(보기) 만들기 에서 해당 메서드를 생성하는 바로 가기 환영 활동:

에도 동일한 작업을 수행합니다. 가입하기 버튼을 클릭합니다.

다음으로, 두 개의 새 클래스와 XML 레이아웃을 생성합니다. 빈 활동 템플릿을 사용합니다. 하나는 로그인 및 다른 가입하기:

다시 openLoginActivity 그리고 오픈사인업활동 메서드에 다음과 같은 명시적 인텐트를 추가합니다:

의 부모 클래스를 변경합니다. Login.java 그리고 SignUp.java 에서 앱 호환 활동활동.

In res/values/styles.xml(v21)를 클릭하고 상위 테마를 Theme.AppCompat.Light.DarkActionBar.

열기 activity_sign_up.xml 를 열고 그 안에 다음을 추가합니다. 상대 레이아웃 태그:

이제 앱을 실행하고 가입하기 버튼을 누르면 머티리얼 디자인 편집 텍스트 요소가 표시됩니다.

라는 새 자바 클래스를 만듭니다. 네트워크 도우미 를 다음과 같이 설정합니다:

안드로이드 앱에서 HTTP 요청을 하려면 먼저 안드로이드 앱에 네트워크 권한 AndroidManifest.xml:

이제 다시 SignUp.java를 클릭하고 다음 속성을 추가합니다:

설정 텍스트 편집 구성 요소의 onCreate 메서드를 사용합니다:

구현 가입 메서드를 사용하여 POST 요청을 보낼 수 있습니다. 8000/가입 이름에 비밀번호를 입력합니다:

앱을 실행하고 이름과 비밀번호를 입력합니다. 사용자 계정이 성공적으로 생성되었다면 201 생성됨 상태 코드를 입력하면 관리자 대시보드에서 새로 생성된 사용자를 볼 수 있습니다:

마지막으로 로그인 화면으로 마무리하겠습니다. In activity_login.xml에 다음을 추가합니다. 상대 레이아웃:

다음에 속성을 추가합니다. Login.java:

그리고 다음에서 동일한 뷰 바인딩 작업을 수행합니다. onCreate:

구현 로그인 메서드를 사용합니다:

앱을 실행하고 이전에 선택한 사용자 아이디와 비밀번호로 로그인합니다. 인증에 성공하면 200 OK 상태 코드가 반환됩니다:

참고: 모든 카우치베이스 라이트 SDK의 메서드에는 복제 객체가 이름과 비밀번호를 받아 대신 인증을 수행하므로 다음 주소로 POST 요청을 할 필요가 없을 것입니다. /스마트홈/_session.

결론

이 튜토리얼에서는 관리자 REST API를 사용하여 Android 앱의 가입 화면을 통해 사용자를 만드는 방법을 배웠습니다.

작성자

게시자 제임스 노센티니, 모바일 테크니컬 라이터, Couchbase

제임스 노센티니는 카우치베이스 모바일의 문서를 담당하는 테크니컬 라이터입니다. 이전에는 개발자 지원 담당자로 일했으며 그 전에는 HouseTrip의 프론트엔드 개발자로 일했습니다. 또한 여가 시간에는 raywenderlich.com에 안드로이드 튜토리얼을 작성하는 것을 즐깁니다.

댓글 하나

  1. 미구엘 앙헬 디아즈 로페즈 4월 25, 2017에서 12:58 오후

    놀라운 게시물입니다! 질문이 있습니다. Couchbase Sync Gateway를 활성 디렉토리 등과 같은 다른 리포지토리에 연결하려면 어떻게해야합니까? 또는 Sync Gateway와 Couchbase Server간에 Single Sign On을 얻을 수있는 방법이 있습니까?

댓글 남기기