基础库
 
 
 
 
 

117 行
4.2 KiB

  1. import 'dart:io';
  2. import 'package:flutter/material.dart';
  3. import 'package:flutter_alibc/alibc_model.dart';
  4. import 'package:flutter_alibc/flutter_alibc.dart';
  5. import 'package:fluttertoast/fluttertoast.dart';
  6. import 'package:package_info/package_info.dart';
  7. import 'package:zhiying_comm/models/profile/profile_model.dart';
  8. import 'package:zhiying_comm/pages/auth_page/auth_success_page/auth_success_page.dart';
  9. import 'package:zhiying_comm/util/taobao/taobao_auth_alert.dart';
  10. import 'package:zhiying_comm/zhiying_comm.dart';
  11. import 'package:provider/provider.dart';
  12. class TaobaoAuth {
  13. // static ProfileModel _profile;
  14. static String name = "";
  15. static String alibcAppKey = "";
  16. static setParams({@required String name, @required String alibcAppKey}) {
  17. TaobaoAuth.name = name;
  18. TaobaoAuth.alibcAppKey = alibcAppKey;
  19. }
  20. // 淘宝授权
  21. static Future auth(BuildContext context) async {
  22. bool isAuth = await TaobaoAuth.isAuth();
  23. if (isAuth) {
  24. Fluttertoast.showToast(msg: '你已经授权过了');
  25. Provider.of<UserInfoNotifier>(context, listen: false).updateUserAuth(true);
  26. return null;
  27. }
  28. bool isConfirm = await showDialog(
  29. context: context,
  30. builder: (BuildContext context) {
  31. return TaobaoAuthAlert();
  32. });
  33. if (isConfirm != null && isConfirm == true) {
  34. Map<String, dynamic> data = Map<String, dynamic>.from(
  35. await NetUtil.post('/api/v1/taobao/auth', method: NetMethod.GET));
  36. Logger.debug(data);
  37. if (data['code'] != 1) {
  38. return null;
  39. }
  40. String url = data['data']['redirect_url'];
  41. print("授权链接" + url);
  42. TradeResult result;
  43. if (Platform.isAndroid) {
  44. // result = await FlutterAlibc.openByUrl(url: url, backUrl: "alisdk://", isAuth: true);
  45. print("name: $name" + "\n" + "alibcAppKey: $alibcAppKey");
  46. var resultMsg = await FlutterAlibc.taoKeLoginNew(name, alibcAppKey);
  47. FlutterAlibc.loginOut();
  48. if (!EmptyUtil.isEmpty(resultMsg["accessToken"])) {
  49. print("access 成功 $resultMsg");
  50. Map<String, dynamic> params = {};
  51. params['access_token'] = resultMsg["accessToken"]?.toString();
  52. await NetUtil.post('/api/v1/tbredirect',
  53. params: params, method: NetMethod.POST);
  54. } else {
  55. print("access 失败 $resultMsg");
  56. Fluttertoast.showToast(msg: "access 失败 $resultMsg");
  57. }
  58. // if(result.errorCode=="0"){
  59. // await Navigator.push(context,MaterialPageRoute(builder: (_)=>AuthSuccessPage(authResultType: AuthResultType.success,)) );
  60. // }else{
  61. // await Navigator.push(context,MaterialPageRoute(builder: (_)=>AuthSuccessPage(authResultType: AuthResultType.error,)) );
  62. // }
  63. } else if (Platform.isIOS) {
  64. result = await FlutterAlibc.openByUrl(url: url);
  65. }
  66. // Logger.log('${result.errorCode} ${result.errorMessage} ');
  67. // if(null != result && result.errorCode == '0'){
  68. // Provider.of<UserInfoNotifier>(context, listen: false).updateUserAuth(true);
  69. // }
  70. await initAuth(context);
  71. }
  72. }
  73. // 返回是否授权
  74. static Future<bool> isAuth() async {
  75. // if (_profile != null) {
  76. // return _profile.isAuth;
  77. // }
  78. try {
  79. Map<String, dynamic> data = Map<String, dynamic>.from(
  80. await NetUtil.post('/api/v1/user/profile', method: NetMethod.GET));
  81. if (data['code'] == 1) {
  82. ProfileModel _profile =
  83. ProfileModel.fromJson(Map<String, dynamic>.from(data['data']));
  84. return _profile.isAuth;
  85. }
  86. } catch (e, s) {
  87. Logger.error(e, s);
  88. }
  89. return false;
  90. }
  91. // 返回是否授权
  92. static void initAuth(BuildContext context) async {
  93. try {
  94. Map<String, dynamic> data = Map<String, dynamic>.from(
  95. await NetUtil.post('/api/v1/user/profile', method: NetMethod.GET));
  96. if (data['code'] == 1) {
  97. ProfileModel model =
  98. ProfileModel.fromJson(Map<String, dynamic>.from(data['data']));
  99. if (null != model && model.isAuth) {
  100. Provider.of<UserInfoNotifier>(context, listen: false).updateUserAuth(true);
  101. }
  102. }
  103. } catch (e, s) {
  104. Logger.error(e, s);
  105. }
  106. }
  107. }