其他分享
首页 > 其他分享> > flutter微信登录--fluwx

flutter微信登录--fluwx

作者:互联网

微信开放平台:https://open.weixin.qq.com/

 

fluwx使用

1.在flutter中的yaml文件中进行配置:

 #微信SDK插件,它允许开发者调用 微信原生SDK https://github.com/OpenFlutter/fluwx
  fluwx: ^3.4.2

2.初始化:

main.dart中进行初始化操作,尽可能早的初始化

import 'package:fluwx/fluwx.dart';
  ///微信登录初始化
  static void initWXLogin() async {
    registerWxApi(
        appId: 'wxxxxxx',//查看微信开放平台
        doOnAndroid: true,
        doOnIOS: true,
        universalLink:
            'xxxxx'//查看微信开放平台
         );

    /* var result = await isWeChatInstalled;
    MyLogUtil.d("是否安装微信 $result");*/
  }

3.登录页代码:

import 'package:fluwx/fluwx.dart' as fluwx;



  @override
  void initState() {
    super.initState();

    fluwx.weChatResponseEventHandler.distinct((a, b) => a == b).listen((res) {
      if (res is fluwx.WeChatAuthResponse) {
        int errCode = res.errCode;
        MyLogUtil.d('微信登录返回值:ErrCode :$errCode  code:${res.code}');
        if (errCode == 0) {
          String code = res.code;
       //把微信登录返回的code传给后台,剩下的事就交给后台处理
          _presenter.getWeChatAccessToken(code);
          showToast("用户同意授权成功");
        } else if (errCode == -4) {
          showToast("用户拒绝授权");
        } else if (errCode == -2) {
          showToast("用户取消授权");
        }
      }
    });
  }


  _buildText('微信登录', padding: EdgeInsets.only(left: widthDimens(10)),
              onJumpTo: () {
            fluwx
                .sendWeChatAuth(
                    scope: "snsapi_userinfo", state: "wechat_sdk_demo_test")
                .then((data) {
              if (!data) {
                showToast('没有安装微信,请安装微信后使用该功能');
              }
              MyLogUtil.d('微信登录:$data');
            });
          }),


Widget _buildText(String textStr,
      {VoidCallback onJumpTo,
      EdgeInsetsGeometry padding: const EdgeInsets.all(0)}) {
    return Padding(
      padding: padding,
      child: InkWell(
        onTap: onJumpTo,
        child: Text(
          textStr,
          maxLines: 1,
          overflow: TextOverflow.ellipsis,
          style: TextStyles.text99912,
        ),
      ),
    );
  }

注:android不需要在做其它的配置,iOS端还需要配置通用链接(Universal Link)

 

iOS 通用链接(Universal Link)配置

1.在苹果开发者账号打开Associated Domains配置

 

 

 

2.在xcode打开Associated Domains开关,将Universal Links域名加到配置上


如果没有Associated Domains选项,点击上方的+Capability添加。值参考下面的7里面的说明

Domains中的域名必须是使用applinks开头,然后输入自己的域名即可。注意:当app第一次启动之后,会自动从你自己的域名目录下下载这个apple-app-site-association文件。

3.配置URL Types


把微信的appID添加为url scheme

 

4.配置LSApplicationQueriesSchemes


打开plist的LSApplicationQueriesSchemes,添加微信的scheme

    <key>LSApplicationQueriesSchemes</key>
    <array>
        <string>wechat</string>
        <string>weixin</string>
        <string>weixinULAPI</string>
    </array>

5.配置apple-app-site-association文件

创建一个空白文件(必须纯文本,命名为apple-app-site-association,去除后缀名)

修改"appID"字段值,值为:teamID.bundleID   查看1.Associated Domains配置里面的图

注:该文件是要存储在一个以https开头的链接服务器里面的

{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "teamID.bundleID",
                "paths": [ "*" ]
            }
        ]
    }
}
 

6.后台服务器配置

把文件apple-app-site-association,放置在服务器提供的链接地址下,格式是“链接/apple-app-site-association”如:https://www.demo.com/apple-app-site-association

用浏览器打开这个地址,可以下载这个文件。用GET请求这个地址,返回文件的JSON内容。

注:有些博客上写的必须在服务器的根目录下,经测试只要是以https开头的链接都可以,就是一个普通的存放文件的链接

7.微信开放平台配置

配置好bundleID和universalLink

如果后台提供的url地址是 https://www.demo.com/apple-app-site-association。那么 Associated Domains 中填写applinks:www.demo.com

微信后台的Universal Links填写https://www.demo.com/
 

8.不成功时排查以下原因:

工程配置associated domain未打开或未添加Universal links域名
配置文件未上线或未按苹果要求放在服务器指定的路径下(域名根目录)
配置文件的Universal links的path末尾没有加通配符*
配置文件的appID(teamID+bundleID)与实际代码和微信开放平台配置的bundleID不匹配

info添加的weixinULAPI注意大小写,如果格式不对也注册不成功 


 

标签:apple,--,微信,app,配置,fluwx,association
来源: https://blog.csdn.net/haoxuhong/article/details/117956586