login method
Implementation
Future<String?> login(AuthInfo authInfo, BuildContext context) async {
if (PlatformGlobals.isTv) {
DeviceCode deviceCode = DeviceCode();
var token = await deviceCode.authenticateUser(
authInfo, "offline_access", authInfo.deviceCodeUrl, context);
Preferences.prefs?.setString("AccessToken", token!);
return token;
}
var state = Preferences.prefs?.getString("OAuth_State");
var codeVerifier = Preferences.prefs?.getString("OAuth_CodeVerifier");
if (kIsWeb && codeVerifier == null) {
codeVerifier = randomAlphaNumeric(80);
Preferences.prefs?.setString("OAuth_CodeVerifier", codeVerifier);
}
AccessTokenResponse tknResponse = await client.getTokenWithAuthCodeFlow(
clientId: authInfo.clientId,
scopes: ["offline_access"],
webAuthClient: baseWebAuth,
state: state,
codeVerifier: codeVerifier,
webAuthOpts: {"useWebview": false},
);
var refreshToken = tknResponse.refreshToken;
if (refreshToken != null) {
Preferences.prefs?.setString("RefreshToken", refreshToken);
}
Preferences.prefs?.setString("AccessToken", tknResponse.accessToken!);
return tknResponse.accessToken;
}