authorize method
사용자가 앱에 로그인할 수 있도록 인가 코드를 요청하는 함수입니다. 인가 코드를 받을 수 있는 서버 개발이 필요합니다.
Implementation
Future<String> authorize({
String? clientId,
required String redirectUri,
List<String>? scopes,
String? agt,
List<String>? channelPublicIds,
List<String>? serviceTerms,
List<Prompt>? prompts,
String? loginHint,
String? codeVerifier,
String? nonce,
String? kauthTxId,
bool webPopupLogin = false,
}) async {
String? codeChallenge =
codeVerifier != null ? _codeChallenge(codeVerifier) : null;
final params = {
Constants.clientId: clientId ?? KakaoSdk.appKey,
Constants.redirectUri: redirectUri,
Constants.responseType: Constants.code,
// "approval_type": "individual",
Constants.scope: scopes?.join(" "),
Constants.agt: agt,
Constants.channelPublicId: channelPublicIds?.join(','),
Constants.serviceTerms: serviceTerms?.join(','),
Constants.prompt: kauthTxId == null
? (prompts == null ? null : _parsePrompts(prompts))
: _parsePrompts(_makeCertPrompts(prompts)),
Constants.loginHint: loginHint,
Constants.codeChallenge: codeChallenge,
Constants.codeChallengeMethod:
codeChallenge != null ? Constants.codeChallengeMethodValue : null,
Constants.kaHeader: await KakaoSdk.kaHeader,
Constants.nonce: nonce,
Constants.kauthTxId: kauthTxId,
};
params.removeWhere((k, v) => v == null);
final url =
Uri.https(KakaoSdk.hosts.kauth, Constants.authorizePath, params);
SdkLog.i(url);
try {
final authCode = await launchBrowserTab(
url,
redirectUri: redirectUri,
popupOpen: webPopupLogin,
);
return _parseCode(authCode);
} catch (e) {
SdkLog.e(e);
rethrow;
}
}