63 lines
2.0 KiB
Dart
63 lines
2.0 KiB
Dart
import 'dart:convert';
|
||
|
||
import 'package:client_proxy_framework/client_proxy_framework.dart';
|
||
import 'package:crypto/crypto.dart' show md5;
|
||
import 'package:device_info_plus/device_info_plus.dart';
|
||
import 'package:flutter/foundation.dart';
|
||
|
||
import '../user/user_state.dart';
|
||
|
||
class AppAuthCallbacks implements AuthServiceCallbacks {
|
||
@override
|
||
Future<String> getDeviceId() async {
|
||
final deviceInfo = DeviceInfoPlugin();
|
||
switch (defaultTargetPlatform) {
|
||
case TargetPlatform.android:
|
||
final android = await deviceInfo.androidInfo;
|
||
return android.id;
|
||
case TargetPlatform.iOS:
|
||
final ios = await deviceInfo.iosInfo;
|
||
return ios.identifierForVendor ?? 'ios-unknown';
|
||
default:
|
||
return 'device-${DateTime.now().millisecondsSinceEpoch}';
|
||
}
|
||
}
|
||
|
||
@override
|
||
String computeSign(String deviceId) {
|
||
return md5.convert(utf8.encode(deviceId)).toString().toUpperCase();
|
||
}
|
||
|
||
@override
|
||
void onLoginSuccess(FastLoginResponse data) {
|
||
if (data.userId != null) UserState.setUserId(data.userId!);
|
||
if (data.credits != null) UserState.setCredits(data.credits!);
|
||
if (data.avatar != null) UserState.setAvatar(data.avatar!);
|
||
if (data.userName != null) UserState.setUserName(data.userName!);
|
||
}
|
||
|
||
@override
|
||
void onCommonInfoLoaded(CommonInfoResponse data) {
|
||
if (data.credits != null) UserState.setCredits(data.credits!);
|
||
if (data.avatar != null) UserState.setAvatar(data.avatar!);
|
||
if (data.userName != null) UserState.setUserName(data.userName!);
|
||
}
|
||
|
||
@override
|
||
void onLoginFailed(String msg) {
|
||
debugPrint('[AuthService] Login failed: $msg');
|
||
}
|
||
}
|
||
|
||
/// 应用侧登录封装;Adjust 归因桥已由框架 [FrameworkAuthService.init] 默认注册。
|
||
class AuthService {
|
||
static final _authCallbacks = AppAuthCallbacks();
|
||
|
||
static Future<void> init() async {
|
||
FrameworkAuthService.init(_authCallbacks);
|
||
await FrameworkAuthService.start();
|
||
}
|
||
|
||
static Future<void> get loginComplete => FrameworkAuthService.loginComplete;
|
||
}
|