토스 로그인 Android SDK 를 위한 모노레포입니다.
토스 로그인 Android SDK를 설치하기 전에 최소 요구 사항을 확인하세요.
- Android 6.0 (API 23) 이상
jitpack 에 배포되어 있고, 그에 따른 설정이 필요합니다.
- root build.gradle 에 다음을 추가합니다.
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
- 사용할 앱 build.gradle dependencies 안에 다음을 추가합니다.
dependencies {
implementation 'com.github.toss:toss-android-sdk:1.0.3'
}
토스 로그인 기능을 구현하기 위해서는 리다이렉션(Redirection)을 통해 인가 코드를 받아야 합니다. 이를 위해 AndroidManifest.xml
에 액티비티(Activity) 설정이 필요합니다. 아래 예제를 참고합니다.
<activity
android:name="com.vivarepublica.loginsdk.activity.TossAuthCodeHandlerActivity"
android:exported="true">
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<!-- Redirect URI: "toss{NATIVE_APP_KEY}://oauth" -->
<data
android:host="oauth"
android:scheme="toss${NATIVE_APP_KEY}" />
</intent-filter>
</activity>
새로운 액티비티를 추가하고, name 요소의 값은 com.vivarepublica.loginsdk.activity.AuthCodeHandlerActivity
로 입력합니다.
Android 12(API 31) 이상을 타깃으로 하는 앱인 경우, exported 요소를 반드시 "true"로 선언해야 합니다.
해당 액티비티 하위에 <intent-filter>
요소를 추가하고, host와 scheme 요소 값으로 토스 로그인을 위한 Redirect URI를 설정합니다.
scheme 속성의 값은 toss{NATIVE_APP_KEY}
형식으로 입력합니다. 예를 들어 앱 키가 "123456789"라면 "toss123456789"를 입력합니다.
targetSdkVersion 가 30(Android 11) 이상인 앱에서 토스앱 설치 여부를 확인하기 위해서는
AndroidManifest.xml
에 다음과 같이 <queries>
태그를 추가해야 합니다.
<manifest package="...">
<queries>
<package android:name="viva.republica.toss" />
</queries>
</manifest>
네이티브 앱 키로 초기화를 해야합니다.
Application
을 상속한 클래스를 사용하고 있다면 다음과 같이 초기화할 수 있습니다.
class TossLoginApplication : Application() {
override fun onCreate() {
super.onCreate()
// 다른 초기화 코드들
// Toss SDK 초기화
TossSdk.init(this, "{NATIVE_APP_KEY}")
}
}
만약 Application 클래스에서 초기화를 하셨다면,
AndroidManifest.xml
의 application 클래스에도 Toss SDK 초기화를 수행한 클래스의 이름을 설정해야 합니다.
위 예제에서는 TossLoginApplication
클래스에서 초기화를 했으므로 아래와 같이 동일한 이름을 설정에 추가합니다.
<application
<!-- android:name 설정 -->
android:name=".TossLoginApplication"
...
>
- 토스로 로그인을 하기 위해선
TossLoginController.login(context: Context, policy : String?, onResult: (TossLoginResult) -> Unit)
함수를 호출하세요- policy 의 default 는 null 입니다 -> null 이면 policy 가 설정되지 않습니다.
isLoginAvailable(context: Context)
함수로 토스앱 실행 가능 여부를 확인할 수 있어요.
if (TossLoginController.isLoginAvailable(context).not()) {
return TossLoginController.moveToPlaystore(context)
}
TossLoginController.login(context, "CHANGE_PERSONAL_INFO") { resunt ->
when (result) {
is TossLoginResult.Success -> {
// authCode 를 통해 accessToken을 발급받으세요.
val accessToken = result.authCode
}
is TossLoginResult.Error -> {
Log.e("TossLogin", "error: ${result.error}")
}
is TossLoginResult.Cancel -> {
// 사용자가 취소했어요.
Log.e("TossLogin", "cancel")
}
}
}