예를 들어 개발자 X가 클라이언트용 웹 애플리케이션을 보유하고 있다고 가정해 보겠습니다. 클라이언트는 자신의 사용자 인증 정보를 사용하여 앱에 로그인하고 여러 매장의 판매 데이터를 볼 수 있습니다. 각 클라이언트는 서로 다른 매장 목록에 액세스할 수 있습니다. 개발자는 클라이언트가 로그인할 때 액세스할 수 있는 매장의 판매 데이터만 볼 수 있도록 애플리케이션에 Looker Studio 대시보드를 삽입하려고 합니다. 이 프로세스가 작동하려면 클라이언트가 Google 계정에 로그인하지 않아도 됩니다.
제안된 솔루션을 사용하려면 개발자가 커뮤니티 커넥터를 만들고 삽입 URL을 통해 토큰을 전달한 다음 토큰을 기반으로 데이터를 필터링해야 합니다.
요구사항
- 대시보드 뷰어는 서드 파티 애플리케이션에 로그인합니다.
- 애플리케이션은 삽입 URL을 통해 고유 토큰을 Looker Studio 대시보드에 전달해야 합니다. 토큰은 필터 정보를 조회하거나 필터 정보를 암호화하는 데 사용할 수 있습니다.
- 커뮤니티 커넥터는 토큰을 필터 값으로 변환할 수 있어야 합니다.
제한사항
- G Suite 고객이고 관리자가 '링크가 있는 모든 사용자'와의 드라이브 파일 공유를 사용 중지한 경우 조직 외부의 사용자와 보고서를 공유할 수 없습니다.
해결 방법
솔루션을 구현하려면 다음 단계를 모두 완료하세요.
웹 앱에서 사용자 토큰 생성
웹 애플리케이션에서 로그인한 각 사용자의 고유한 토큰을 생성합니다.이후 단계에서 이 토큰을 삽입된 대시보드에 전달합니다.
토큰을 사용하여 관련 데이터를 필터링해야 합니다. 옵션은 다음과 같습니다.
- 특정 토큰에 대해 필터링된 데이터 또는 사용자 정보를 반환하는 API 엔드포인트를 만듭니다.
- 나중에 커넥터에서 복호화할 수 있도록 토큰의 사용자 정보를 암호화합니다.
새 커뮤니티 커넥터 만들기
커뮤니티 커넥터 작동 방식을 검토하고 커뮤니티 커넥터 Codelab을 완료하여 시작하세요. 커넥터 생성을 위한 로컬 개발 도구를 사용하면 개발 프로세스를 더 빠르고 쉽게 수행할 수 있습니다.
커넥터 코드 작성
getConfig()
는 구성 항목을 하나 이상 반환해야 합니다. 이 매개변수는 삽입 URL의 매개변수에서 토큰을 캡처하는 데 사용됩니다.function getConfig(request) { var cc = DataStudioApp.createCommunityConnector(); var config = cc.getConfig(); config .newTextInput() .setId('token') .setName('Enter user token'); // TODO: Add additional config values if applicable for your connector config.setDateRangeRequired(false); config.setIsSteppedConfig(false); return config.build(); }
getData()
은request.configParams
객체를 통해 토큰에 액세스할 수 있습니다. 토큰을 사용하여 필터링된 데이터를 가져오거나 기존에 가져온 데이터를 필터링합니다.
위의 예에서 토큰은request.configParams.token
이 됩니다.getData()
에서는 토큰이 REST API 엔드포인트로 전달되어 상점 ID 목록을 가져옵니다. 이러한 매장 ID는 판매 데이터를 가져오기 위한 SQL 쿼리를 작성하는 데 사용됩니다.var STORE_ID_API = 'https://www.example.com/api/storeid'; var QUERY_STRING_PREFIX = "SELECT StoreName, Sales from stores" function getData(request) { var token = request.configParams.token; var storeIds = getStoreIdList(token); var queryString = constructQueryString(storeIds); var fetchedData = fetchData(queryString); // rest of getData() implementation } function getStoreIdList(token) { var url = STORE_ID_API; var response = UrlFetchApp.fetch(url); var parsedResponse = JSON.parse(response); return parsedResponse.storeIds; } function constructQueryString(storeIds) { var storeIdString = storeIds.join(','); var queryString = QUERY_STRING_PREFIX + ' WHERE storeId in (' + storeIdString + ')'; return queryString; }
대시보드 만들기
- 커넥터의 배포 및 버전 작동 방식을 이해합니다.
- 커넥터의 프로덕션 배포를 만듭니다.
- 프로덕션 배포 링크를 사용하여 Looker Studio에서 데이터 소스와 보고서를 만듭니다.
token
구성 매개변수의 경우 보고서 조회자가 매개변수 값을 수정할 수 있도록 허용합니다.- 선택한 사용자 또는 '링크가 있는 모든 사용자'와 대시보드를 공유합니다.
- 보고서 삽입을 사용 설정합니다.
플랫폼에 대시보드 삽입
- 보고서 URL 매개변수의 작동 방식을 이해합니다.
- URL 매개변수를 사용하여 동적으로 생성된 토큰 값을 삽입된 Looker Studio 보고서에 전달합니다.
삽입 URL은 다음과 유사합니다.
`https://lookerstudio.google.com/embed/reporting/REPORT_ID/page/PAGE_ID?config=%7B%22ds0%22%3A%7B%22token%22%3A%22TOKEN_VALUE%22%7D%7D
권장사항
- 단기 토큰을 만들어야 합니다.
- 대시보드가 잘못된 토큰으로 조회된 정보를 유출하지 않는지 확인합니다.