首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
huanggan
V2EX  ›  程序员

分享:个人 APP(非企业资质)的微信登录方案

  •  
  •   huanggan · 148 天前 · 1299 次点击
    这是一个创建于 148 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前微信开放平台个人主体类 APP 不支持开通微信登录,那么个人开发者如何解决微信登录的问题呢?目前有一种替代方案是用微信小程序作为媒介来达到微信登录的目的。

    image

    微信小程序的登录无需企业资质,同时登录后返回以下信息

    • 用户唯一标识 open_id
    • 头像
    • 昵称

    并且微信小程序支持被 APP 打开,执行操作后再返回数据。

    所以目前的思路是通过 APP 跳转微信小程序再回传来实现微信登录

    实现前提条件

    • 微信开放平台账号(个人类)
    • 在开发平台下创建 APP 并审核通过
    • 已上线一个微信小程序
    • 在开放平台绑定该微信小程序
    • APP 和小程序关联

    当然没有上线的微信小程序也可以,有小程序 id 即可,但只能进行测试

    以安卓 APP 为例,集成微信 SDK 初始化后,设置小程序原始 id 来跳转小程序,可以传递参数给小程序

    String appId = "......."; //此处为 AppId
    final IWXAPI api = WXAPIFactory.createWXAPI(this, appId);
    api.registerApp(appId);
    findViewById(R.id.wx_login).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            WXLaunchMiniProgram.Req req = new WXLaunchMiniProgram.Req();
            req.userName = "gh_f1312c106dff"; // 填小程序原始 id
            req.path = "pages/index/index?appLogin=1";  //拉起小程序页面的可带参路径,不填默认拉起小程序首页,对于小游戏,可以只传入 query 部分,来实现传参效果,如:传入 "?foo=bar"。
            req.miniprogramType = WXLaunchMiniProgram.Req.MINIPROGRAM_TYPE_TEST;// 可选打开 开发版,体验版和正式版,
            api.sendReq(req);
        }
    });
    

    小程序被调起后会在 onLoad 方法接收到参数,再调用 wx.login 方法获取 js_code,再通过 js_code 拿 open_id

    onLoad(options) {
        if (options.appLogin){
            wx.login({
                success: res => {
                // 发送 res.code 到后台换取 openId, sessionKey, unionId
                }
            })
        }
    },
    

    再通过 button 的 open-type="getUserInfo"可弹起登录申请获取用户信息,然后再返回 APP 客户端即可

    微信相关文档

    https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/launchApp.html https://developers.weixin.qq.com/doc/oplatform/Mobile_App/Launching_a_Mini_Program/Launching_a_Mini_Program.html

    顺便推个公众号,不感兴趣的同学可以跳过

    image

    《 IT 独立开发者》帮助程序员拓展产品、运营、设计等思维能力,开发独立产品,致力成为自由职业者,实现财富自由

    目前尚无回复
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   842 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 29ms · UTC 19:26 · PVG 03:26 · LAX 11:26 · JFK 14:26
    ♥ Do have faith in what you're doing.