1. Flutter 개발환경 준비하기

https://docs.flutter.dev/get-started/install

위 flutter 공식 문서에 따라 flutter 개발 환경설정을 진행해주세요. 이미 flutter 개발환경이 설정되신 분은 넘어가셔도 좋습니다.

Git 저장소 다운로드

Sample 프로젝트를 다운받아 사용하고 싶으신 분은 다음 명령어를 통해 git 저장소를 다운로드 받으세요.

Furo Flutter Sample 프로젝트를 다운로드 받습니다.

git clone https://github.com/lukasjhan/furo-sample-flutter

직접 프로젝트를 만들고 싶으신 분은 다음 가이드를 따라 진행해주세요.

web_auth 라이브러리 설치 및 사용법

이번 가이드에서 저희는 flutter_web_auth 라는 라이브러리를 사용합니다. 라이브러리에 관한 사항은 링크를 참고해주세요.

  • 설치

pubspec.yaml 파일에 dependencies 섹션을 찾아 그곳에 라이브러리를 추가합니다. 예시는 다음과 같습니다.

dependencies:
  flutter:
    sdk: flutter

  flutter_web_auth: ^0.5.0
  http: ^0.13.6
  flutter_dotenv: ^5.0.2

assets: lib/.env # path to your .env
  • 사용
import 'package:flutter_web_auth/flutter_web_auth.dart';

final result = await FlutterWebAuth.authenticate(
        url: loginUrl,
        callbackUrlScheme: scheme
);

final code = Uri.parse(result).queryParameters['code'];
print(code);
파라미터 이름설명타입
url로그인 페이지의 urlstring
callbackUrlScheme인증 후 callback을 받는 uri의 scheme(deep link) web: http/https, mobile: app.scheme [ ex) youtube:// ]string

“callbackUrlScheme”은 유효한 스키마 문자열이어야만 작동합니다. 유효한 RFC 3986 URL 스키마는 “문자로 시작하고 문자, 숫자, 플러스 기호 (”+”), 점 (”.“) 또는 하이픈 (”-“)의 조합이 이어져야 합니다.”

Sample code

2. Furo 로그인 연동하기

  1. 콘솔에서 복사한 값을 .env 파일에 옮깁니다. 또는 .env파일을 생성한 후 아래와 같이 환경변수를 설정합니다. 만약.env 파일을 사용할 수 없다면 main.dart 파일의 clientId에 콘솔에서 가져온 Client ID를 넣습니다.
CLIENT_ID="{{YOUR_CLIENT_ID}}"
  1. 콘솔 입력창의 Default Callback URI에 기본값 https://sample.furo.one/{{YOUR_CLIENT_ID}}http://localhost:3000/{{YOUR_CLIENT_ID}} 로 변경합니다.

web

콘솔 입력창의 Default Callback URI에 기본값 https://sample.furo.one/{{YOUR_CLIENT_ID}}http://localhost:{port}/auth.html 로 변경합니다.

프로젝트의 web 디렉토리 하위에 auth.html 파일을 추가합니다.

<!DOCTYPE html>
<title>Authentication complete</title>
<p>
  Authentication is complete. If this does not happen automatically, please
  close the window.
  <script>
    console.log(window.location.href);
    window.opener.postMessage(
      {
        'flutter-web-auth': window.location.href,
      },
      window.location.origin,
    );
    window.close();
  </script>
</p>

프로젝트를 시작 후 로그인 버튼을 눌러 furo에 로그인합니다.

Android

콘솔 입력창의 Default Callback URI에 기본값 https://sample.furo.one/{{YOUR_CLIENT_ID}}{app.scheme}://auth 로 변경합니다.

android/app/src/main/AndroidManifest.xml 파일에 app.scheme를 추가해야합니다.

<intent-filter>
      ...
      <data android:scheme="app.test" />
</intent-filter>

IOS

ios/Runner/info.plist 파일에 app.scheme를 추가해야합니다.
<key>CFBundleURLTypes</key>
<array>
	<dict>
		<key>CFBundleTypeRole</key>
		<string>Editor</string>
		<key>CFBundleURLName</key>
		<string>{deeplink_name}</string>
		<key>CFBundleURLSchemes</key>
		<array>
			<string>{scheme}</string>
		</array>
	</dict>
</array>

{deeplink_name}{scheme}를 설정하시면 됩니다.

Was this page helpful?